Вопрос по rendering, parameters, java, playframework-2.0, templates – Как можно передать несколько параметров в шаблон в Play 2.0?

9

я хочу сделать в моем шаблоне 2 вещи одновременно, как это:

String one = "one"; 
String two = "two";
return ok(template.render(one,two));

но Playframework говорит, что это неправильно. Как можно сделать 2 значения одновременно? я должен сохранить их в список? но затем я должен распаковать его снова в моем шаблоне .. :(

пожалуйста помоги! ценю любую помощь!

решено, спасибо Маркусу, что код выше в порядке .. doniyor

Ваш Ответ

1   ответ
19

Шаблоны Play в 2.0 - это просто функции Scala, поэтому вам нужно объявить params в начале шаблона (начиная со строки № 1):

@(one: String, two: String)

This is first param: @one <br/>
This is second param: @two

Проверитьшаблоны документов для деталей

Map

С другой стороны, если вам нужно передать большое количество переменных одного типа, тогдаMap может быть хорошим решением, а также:

public static Result index() {

    Map<String, String> labels = new HashMap<String, String>();

    labels.put("first", "First label");
    labels.put("second", "Second label");
    // etc etc
    labels.put("hundredth", "Label no. 100");

    return ok(template.render(labels));
}

template.scala.html

@(labels: Map[String, String])

@labels.get("first") <br/>
@labels.get("second") <br/>
.....
@labels.get("hundredth")

View model

Наконец, чтобы сделать вещи еще более безопасными, вы можете создать свой собственныйview models как (образец):

package models.view;

import java.util.Date;

public class MyViewModel {

    public String pageTitle = "";
    public Date currentDate = new Date();
    public Integer counter = 0;
    // etc...

}

контроллер:

public static Result myActionUsingModel() {
    MyViewModel data = new MyViewModel();
    data.pageTitle = "Ellou' World!";
    data.counter = 123;

    return ok(myViewUsingModel.render(data));
}

Посмотреть:

@(data: models.view.MyViewModel)

<h1>@data.pageTitle</h1>

<div>Now is: @data.currentDate</div>
<div>The counter value is: @data.counter</div>
о, это работает !, рендер выглядел странно, я думал, что это ошибка .. спасибо Маркус! doniyor

Похожие вопросы