如何使用Scala表单映射Play Framework中的复选框?
我有一个关于PlayFramework2.3和Scala的项目 我有一个模型:如何使用Scala表单映射Play Framework中的复选框?,scala,playframework,playframework-2.3,Scala,Playframework,Playframework 2.3,我有一个关于PlayFramework2.3和Scala的项目 我有一个模型: case class User( name: String, login: String, password: String, isAdministrator: Boolean) 在没有播放窗体帮助的视图中显示和窗体: <form action="@controllers.routes.Users.create()" method="POST">
case class User(
name: String,
login: String,
password: String,
isAdministrator: Boolean)
在没有播放窗体帮助的视图中显示和窗体:
<form action="@controllers.routes.Users.create()" method="POST">
<input type="text" name="login">
<input type="text" name="name">
<input type="password" name="password">
<input type="checkbox" name="isAdministrator">
<button type="submit" class="btn btn-success">Save</button>
</form>
这总是像是一个糟糕的要求。调试器向我显示,复选框映射中存在错误。请求中的复选框如下所示:password->ArrayBuffer(on)
我也尝试同样的方法:
_.isAdministrator -> checked("on"),
而且它也不起作用。
使用Scala表单在Play Framework中映射复选框的正确方法是什么?这更像是一个建议,但我不能发表评论,因为我只有不到50个代表 我认为使用JS调用服务器对于通过Play处理用户输入比较容易混淆,除非您希望您的站点在没有JS的情况下工作 这里有一个例子。我假设您为/doStuff/:参数设置了(POST)路由 HTML:
当您向复选框添加value=“true”时,以下所有代码都有效,如下所示:
<input type="checkbox" name="isAdministrator" value="true"/>
我知道这是一个老问题,但我今天发现它在寻找解决方案。下面是映射复选框值的方法,但我不使用case类进行映射
val isAdministrator = request.body.dataParts.get("isAdministrator").exists(_.nonEmpty)
我在Playframework 2.5.8中使用此解决方案
$("#save").click(function(){
var input = $("#input").val()
$.post("/doStuff/" + input, function (data) {
// Handle server data, passed with Ok("Here's my data")
});
return false;
});
<input type="checkbox" name="isAdministrator" value="true"/>
val isAdministrator = request.body.dataParts.get("isAdministrator").exists(_.nonEmpty)