2

我正在使用播放框架 2.0.4

在我的java文件中,

return ok(views.html.name.render(Name.all(),NameForm));


在我的 html 文件中,

@(name: List[Name],NameForm: Form[Name])

我想通过在@import helper 中使用@select 来对名称数组中的数据创建一个下拉列表(例如在纯HTML 中使用选择、选项标签)。
我对Play 很陌生,因此有人可以告诉我如何存档?
非常感谢。

4

2 回答 2

8

一种方法是将您的选项定义为列表,由静态方法返回

创建一个 Java 类

public class ComboboxOpts {
    public static List<String> myCustomOptions(){
        List<String> tmp = new ArrayList();

        tmp.add("This is option 1");
        tmp.add("This is option 2");
        tmp.add("This is option 3");
        return tmp;
    }
....
}

在您的 HTML 中,导入帮助程序

@import helper._

并尝试

 @select(
     myForm("myDropdownId"),
     options = options(ComboboxOpts.myCustomOptions),
     '_label -> "This is my dropdown label",
     '_showConstraints -> false
 )

另一种方法是定义一个自定义表单字段。看到这个链接

@helper.form(action = routes.Application.submit(), 'id -> "myForm") {
    <select>
        <option>This is option 1</option>
        <option>This is option 2</option>
        <option>This is option 3</option>
    </select>
}

在您提出这些问题之前,请务必进行广泛的 Google 搜索。我确信有教程和/或已经被问过的相同问题

干杯

于 2012-10-10T13:02:47.963 回答
4
Use String in List[String] (in your html) List<String> in your java file.
Or if you want both value and text of drop down to be different like :

    <option value="1">One</option>

Use Map<String, String> instead of List<String> and pass it to @select

    Java file:
    Map<String, String> options = new HashMap<String, String>();
        options.put("1", "One");
        options.put("2", "Two");
    return ok(views.html.name.render(options, NameForm));

    Html:
    @(name: Map<String, String>,NameForm: Form[Name])
于 2013-03-13T09:46:31.310 回答