如何在play框架中隐藏文本字段

Pra*_*A R 6 scala playframework

如何在play框架中隐藏文本字段?例如,如何隐藏此字段:

@inputText(userProfileForm("name"), '_label -> "Name")
Run Code Online (Sandbox Code Playgroud)

Aer*_*rus 22

这适用于所有浏览器:

@inputText(
    userProfileForm("name"),
    '_label -> "Name",
    'style -> "display: none"
)
Run Code Online (Sandbox Code Playgroud)

请注意,这只隐藏字段,而不是标签等.

如果您还想隐藏标签,则无法使用默认帮助程序执行此操作.但是,您可以自己指定输入字段:

<input type="hidden" name="name" value="@userProfileForm.data.get("name")" />
Run Code Online (Sandbox Code Playgroud)

name你的表单中的字段应该是名称(巧合的是name在藏汉这种情况下).
我还没有测试value,但它应该工作,也许你就需要剥离"周围name.

如果这样做,隐藏数据将与表单中的其他数据一起发送到服务器.

编辑:
如果隐藏值为空,则表示在调用视图时未将其绑定到表单.你可以在Java中将名称绑定到这样的表单(我不知道Scala,但是在Play Scala文档中对它进行了解释):

Map<String, String> data = new HashMap<>();
data.put("name","get the username here");

return ok(index.render(userProfileForm.bind(data));
Run Code Online (Sandbox Code Playgroud)

另一种选择(在我看来更干净)是简单地将用户名作为参数传递给视图.控制器变为:

return ok(index.render(userProfileForm, "username goes here"));
Run Code Online (Sandbox Code Playgroud)

在视图中,您可以简单地执行以下操作:

@(userProfileForm : Form[UserProfileForm])(name : String)

@helper.form(...){
    <input type="hidden" name="name" value="@name" />
    //...
}
Run Code Online (Sandbox Code Playgroud)


dre*_*xin 6

inputText助手采用的可变参数(Symbol, Any),它代表了HTML属性.如果您使用的是html5,则可以添加隐藏属性:

@inputText(userProfileForm("name"), '_label -> "Name", 'hidden -> "hidden")
Run Code Online (Sandbox Code Playgroud)

通常该hidden属性没有值,但我找不到任何有关如何使用帮助程序执行此操作的信息.在Chrome中,至少它的工作方式也是如此.

编辑:

顺便说一句,你也可以使用html而不是帮助器:

<input attribute=value hidden />
Run Code Online (Sandbox Code Playgroud)