2

いくつかのフィールドを持つスカラ フォームがあります。フォーム内のフィールドは、Java クラスのメンバー変数にマップされます。フィールドの1つ(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 に答える