私は 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
を囲む一種のラッパー オブジェクトと、新しいフォーム バッキング オブジェクトとして使用される追加の属性です。ただし、これは私見の単純なタスクの場合はより多くの作業です。より良い解決策はありますか?