在游戏中使用@select! Framework 2.3 模板和 Java
Use of @select in a Play! Framework 2.3 template and Java
我正在尝试在 Play 中使用 'select' 表单元素! 2.3,无法让它工作。我要为模板提供什么?目前我有这个:
public static Result add(Long sensorId) {
Form<Action> myForm = Form.form(Action.class);
Sensor sensor = Sensor.find.byId(sensorId);
Action action = new Action();
action.actionUp = true;
action.sensor = sensor;
myForm.fill(action);
HashMap<String, String> devices = new HashMap<>();
for(Device device : Device.find.all()){
devices.put(device.id.toString(), device.name);
}
return ok(editView.render(myForm, action, devices));
}
和模板:
@(myForm: Form[models.Action], action: models.Action, deviceList: HashMap[String, String])
@helper.select(myForm("device"), deviceList,'_label -> "Perform on device")
但这并不像它期望的那样工作 Seq[(String, String)]。
不过,我找不到在 Java 中创建它的方法...非常感谢任何帮助!
表单助手不会知道,如果您直接将 deviceList
放在 select
中,最后它期望您提供 options
。这就是原因,它显示此错误 expects a Seq[(String, String)]
.
要解决这个问题,您必须用 options
包裹 deviceList
,让助手知道 deviceList
是 select
的 options
。
所以应该像下面这样
@helper.select(myForm("device"), options(deviceList),'_label -> "Perform on device")
我正在尝试在 Play 中使用 'select' 表单元素! 2.3,无法让它工作。我要为模板提供什么?目前我有这个:
public static Result add(Long sensorId) {
Form<Action> myForm = Form.form(Action.class);
Sensor sensor = Sensor.find.byId(sensorId);
Action action = new Action();
action.actionUp = true;
action.sensor = sensor;
myForm.fill(action);
HashMap<String, String> devices = new HashMap<>();
for(Device device : Device.find.all()){
devices.put(device.id.toString(), device.name);
}
return ok(editView.render(myForm, action, devices));
}
和模板:
@(myForm: Form[models.Action], action: models.Action, deviceList: HashMap[String, String])
@helper.select(myForm("device"), deviceList,'_label -> "Perform on device")
但这并不像它期望的那样工作 Seq[(String, String)]。 不过,我找不到在 Java 中创建它的方法...非常感谢任何帮助!
表单助手不会知道,如果您直接将 deviceList
放在 select
中,最后它期望您提供 options
。这就是原因,它显示此错误 expects a Seq[(String, String)]
.
要解决这个问题,您必须用 options
包裹 deviceList
,让助手知道 deviceList
是 select
的 options
。
所以应该像下面这样
@helper.select(myForm("device"), options(deviceList),'_label -> "Perform on device")