2

我有一个包含多个字段的 scala 表单。表单中的字段映射到 Java 类的成员变量。我想将其中一个字段(比如 userId)与一个值绑定(我不希望用户为此字段输入值。相反,我想将其作为参数传递给 scala 模板)。但是,我无法手动绑定表单域。非常感谢任何帮助。

请参阅下面的示例以便于理解:

`@(itemForm: Form[Item], user: User)
 @import helper._
 @main("Item list") {
 @if(user != null) {
    @form(routes.Application.newItem()) {
    @itemForm("userId") = @user.id /**I want to bind the userId form field */
        @inputText(itemForm("title")) 
        @inputText(itemForm("description"))
        @inputText(itemForm("price"))
        <input type="submit" value="Create">
    }
}
}`
4

1 回答 1

1

在这种情况下,最好将它作为动作的参数传递(记得修改路由声明)

@form(routes.Application.newItem(user.id)){
   ....

你也可以只使用普通的html

<input type="hidden" name="userId" value="@user.id" />

编辑:

验证在行动。注意:在隐藏字段旁边的页面上显示错误是没有意义的,因此您不需要错误消息的占位符。将 VALID 值传递到隐藏字段由您决定。向无法更改隐藏字段值的用户显示验证错误是不好的概念。

public static Result newItem(){
    Form<ItemModel> itemForm = form(ItemModel.class).bindFromRequest();
    if (itemForm.hasErrors(){
        return badRequest(newItemView.render(itemForm));
    }    
    itemForm.get().save();
    return ok("Your new item is saved...");
}
于 2012-04-17T05:50:48.587 回答