我正在使用以下代码在Play中创建表单:
@inputText(loginForm("password"),'type -> "password",'_label -> null)
<dl class=" " id="password_field"> <dt><label for="password"></label></dt> <dd> <input type="password" id="password" name="password" value="">
虽然我希望它生成:
<input type="password" id="password" name="password" value="">
有这么简单的方法吗?
解决方法
您可以通过创建自定义FieldConstructor来实现此目的(请参阅
http://www.playframework.com/documentation/2.3.x/ScalaCustomFieldConstructors).
创建一个包含以下内容的新文件views / helper / myPlainFieldConstructor.scala.html:
@(elements: helper.FieldElements) @elements.input
然后,在包含您的表单的视图模板中:
@import helper._ @implicitField = @{ FieldConstructor(myPlainFieldConstructor.f) } [...] @form(action = ...) { @inputPassword(loginForm("password")) }
注意:如果您确实需要value =“”,则可以添加’value – > “”对帮助者的论点,即
@inputPassword(loginForm("password"),'value -> "")
或者使用通用输入助手进一步自定义HTML,如下所示:
@input(loginForm("password")) { (id,name,value,args) => <input type="password" name="@name" id="@id" value="" @toHtmlArgs(args)> }