Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Scala表单映射Play Framework中的复选框?_Scala_Playframework_Playframework 2.3 - Fatal编程技术网

如何使用Scala表单映射Play Framework中的复选框?

如何使用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">

我有一个关于PlayFramework2.3和Scala的项目

我有一个模型:

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)