0

私は Spring MVC (Spring Roo 経由) を使用して、人を管理するための小さな Web アプリケーションを作成しています。人物を作成するページでは、BeanPersonがフォーム バッキング オブジェクト (モデル マップのキー「人物」) として使用されます。

<form:form action="${form_url}" method="POST" modelAttribute="person">

作成フォームでユーザーが変更できるモデル マップにいくつかの属性を追加したいと思います。基本的に、ブール値を追加して、ユーザーが送信ボタンを押した後に次に表示されるページを制御できるようにします。

シンプルなチェックボックスを使用して、ブール値 (モデル マップのキー「myBoolean」) を変更しようとしています。

<form:checkbox id="_myboolean_id" path="myBoolean"/>

ただし、Spring MVC は初めてなので、ここでいくつかの問題があります。Boolean オブジェクトは、フォーム バッキング オブジェクトの属性ではありません。したがって、アクセスしようとすると、次の例外がスローされます (もちろん):

Bean クラス [de.cm.model.Person] の無効なプロパティ 'myBoolean': Bean プロパティ 'myBoolean' が読み取れないか、無効なゲッター メソッドがあります: ゲッターの戻り値の型は、セッターのパラメーターの型と一致しますか?

モデル マップの値に直接アクセスする方法はありますか? 私が今想像できる唯一の解決策は、クラスPersonを囲む一種のラッパー オブジェクトと、新しいフォーム バッキング オブジェクトとして使用される追加の属性です。ただし、これは私見の単純なタスクの場合はより多くの作業です。より良い解決策はありますか?

4

1 に答える 1

2

カスタムフォームフィールドを作成できます:

<input type="checkbox" name="myBoolean"/>

そして、コントローラーの post メソッドで追加のパラメーターを指定します。

public ModelAndView savePerson(@ModelAttribute("person") Person person, @RequestParameter ("myBoolean") Boolean myBoolean)
于 2010-03-21T10:28:14.830 に答える