Play Framework 使用复选框提交布尔值?
Play Framework submitting boolean values with checkbox?
使用 Play 2.3.x 我想了解如何在表单中处理复选框。 This question seems like an outdated solution for an older version of Play. I understand that checkbox info will only be posted if checked,但我创建了一个小型示例应用程序,即使我选中了复选框,也不会发布任何信息。这是我的示例 "Hello World" 应用程序
型号
public static class Hello {
@Required public String name;
@Required @Min(1) @Max(100) public Integer repeat;
public String color;
public Boolean box1;
public Boolean box2;
}
查看
@* For brevity, here is the checkbox code *@
<label>
<input type="checkbox"
name="@helloForm("box1").name"
value="@helloForm("box1").value"> Box 1
</label>
<label>
<input type="checkbox"
name="@helloForm("box2").name"
value="@helloForm("box2").value"> Box 2
</label>
控制器
public static Result sayHello() {
Form<Hello> form = Form.form(Hello.class).bindFromRequest();
if(form.hasErrors()) {
return badRequest(index.render(form));
} else {
Hello data = form.get();
Logger.debug("Box 1 was " + data.box1);
Logger.debug("Box 2 was " + data.box2);
return ok(
hello.render(data.name, data.repeat, data.color)
);
}
}
我想看看能否得到调试语句中打印的布尔true/false信息。现在即使我点击两个框并提交,它们 return 为 null
。另外,我知道复选框有一个视图助手,但我想了解如何使用自定义视图使其工作。 关于如何使用复选框映射布尔属性有什么建议吗?
假设您有以下内容:
<input type="checkbox" name="box1" checked="checked" value="true"> I have a box1
只要单击(或选中)复选框,名称为 box1
的字段将作为 true
发送到服务器。未选中时,将不会为该字段发送任何内容。
我做的是在模型中设置(在你的情况下,class你好),布尔字段默认为false:
public Boolean box1=false;
public Boolean box2=false;
在这种情况下,当 bindFromRequest()
发生并且 POST 方法没有为字段 box1
and/or box2
发送任何值时,字段将填充默认(假)值。
在视图中,您唯一需要的是如下(我不使用播放助手):
<input type="checkbox"
name="@helloForm("box1").name"
value="true"
@if(helloForm("box1").value.contains("true")){checked="checked"}> Box 1
如果字段作为 true
发送到视图,这将选中您的复选框
使用 Play 2.3.x 我想了解如何在表单中处理复选框。 This question seems like an outdated solution for an older version of Play. I understand that checkbox info will only be posted if checked,但我创建了一个小型示例应用程序,即使我选中了复选框,也不会发布任何信息。这是我的示例 "Hello World" 应用程序
型号
public static class Hello {
@Required public String name;
@Required @Min(1) @Max(100) public Integer repeat;
public String color;
public Boolean box1;
public Boolean box2;
}
查看
@* For brevity, here is the checkbox code *@
<label>
<input type="checkbox"
name="@helloForm("box1").name"
value="@helloForm("box1").value"> Box 1
</label>
<label>
<input type="checkbox"
name="@helloForm("box2").name"
value="@helloForm("box2").value"> Box 2
</label>
控制器
public static Result sayHello() {
Form<Hello> form = Form.form(Hello.class).bindFromRequest();
if(form.hasErrors()) {
return badRequest(index.render(form));
} else {
Hello data = form.get();
Logger.debug("Box 1 was " + data.box1);
Logger.debug("Box 2 was " + data.box2);
return ok(
hello.render(data.name, data.repeat, data.color)
);
}
}
我想看看能否得到调试语句中打印的布尔true/false信息。现在即使我点击两个框并提交,它们 return 为 null
。另外,我知道复选框有一个视图助手,但我想了解如何使用自定义视图使其工作。 关于如何使用复选框映射布尔属性有什么建议吗?
假设您有以下内容:
<input type="checkbox" name="box1" checked="checked" value="true"> I have a box1
只要单击(或选中)复选框,名称为 box1
的字段将作为 true
发送到服务器。未选中时,将不会为该字段发送任何内容。
我做的是在模型中设置(在你的情况下,class你好),布尔字段默认为false:
public Boolean box1=false;
public Boolean box2=false;
在这种情况下,当 bindFromRequest()
发生并且 POST 方法没有为字段 box1
and/or box2
发送任何值时,字段将填充默认(假)值。
在视图中,您唯一需要的是如下(我不使用播放助手):
<input type="checkbox"
name="@helloForm("box1").name"
value="true"
@if(helloForm("box1").value.contains("true")){checked="checked"}> Box 1
如果字段作为 true