顧客のすべての詳細を含むJSPページを表示する custprofileview
アクションがあり、私のJSPではすべてのフィールドが私のようなものです
<s:textfield name="custprofileVO.email" value="%{custprofileVO.email}" />
<s:textfield name="custprofileVO.phone" value="%{custprofileVO.phone}" />
そして、 Action を呼び出す送信ボタンがありますupdatecustprofile
。
実際updatecustprofile
には、プロパティを直接マッピングする代わりに、 private CustprofileVO custprofileVO;
setter と getter を持つメンバー変数があります。
CustprofileVO
クラスには のようなフィールドがありemail
、phone
他のすべてのフィールドにはセッターとゲッター メソッドがあります。
問題は次のとおりです。updatecustprofile
アクションではPrepareable
インターフェイスを実装しています。prepare()
メソッドの実装ではcustprofileVO.setDefaultID("Select");
、さらに4つのフィールドを設定していますが、送信ボタンをクリックしてプログラムを実行するとNPE
、最初の行に表示されますcustprofileVO.setDefaultID("Select");
フレームワークがインスタンス化されていないよう CustprofileVO custprofileVO
です。custprofileVO
フィールドの設定のすぐ上で手動でインスタンス化する と(そうcustprofileVO = new CustprofileVO()
することで機能します。問題は-理想的にはstruts2フレームワークが実行していないインスタンスを提供する必要があり、理由を理解したい.
さらに、prepare メソッドで手動で設定 custprofileVO
すると機能しますが、フィールド名が XML を使用して検証を適用し custprofileVO.email
、その検証とその検証 も適用しcustprofileVO.phone
ました。
送信ボタンをクリックして検証しようとすると、検証が実行されますが、すべてのテキストボックスのデータが空白になるため、画面にすべてのフィールドのメッセージが表示されます。
データが削除されるのはなぜですか?