Struts 2 とのインターフェイスを使用して動的な Web アプリケーションを作成しようとしていModelDriven
ます。Struts1 を使用したことはありますが、Struts 2 での試みはこれが初めてです。
データベースに保存されている値からフォームを作成できますが、値を変更してデータベースを更新しようとすると、フォームの値がモデルに読み込まれません。
プロジェクト全体をここにアップロードしました(この時点で実行するには MySQL データベースが必要です)。
プロジェクトをロードしたら:
- に進み
http://localhost/Vikos/secure/user
ます。 - ログインページに移動します。次を入力
logon email = consumer@test.com
しpassword = password
ます。 User
データベースから入力されたフォームを含むページが表示されます。Last Name フィールドを更新して<Update>
ボタンをクリックすると、データベース内の値が更新されますが、値が返されません。
HTMLフォームからモデルに値を取得する方法は?
アップデート:
この投稿のタイトルを変更し、内容を少し修正して、何が起こっているかをより正確に説明しました。また、メソッドにいくつかのデバッグ コードを追加しましたUserAction.prepare()
。Struts2 は、パラメータ配列の最初の要素 ( ) ではなくUserModel
、文字列配列 ( ) を使用してプロパティをロードしようとしているようです。parmValues
correctVal
public void prepare() throws Exception {
// BEGIN - ADDED FOR DEBUGGING PURPOSES
Map parameters = request.getParameterMap();
Set keys = parameters.keySet();
Iterator iter = keys.iterator();
String key;
String[] parmValues;
while (iter.hasNext()) {
key = iter.next().toString();
parmValues = (String[])(String[])parameters.get(key);
if (parmValues.length == 1) {
String correctVal = parmValues[0];
System.out.println(correctVal); // This is printing out the correct updated form values.
}
}
// END - ADDED FOR DEBUGGING PURPOSES
determineCrudType();
}
13:21:42.773 [http-bio-80-exec-7] エラー coxiParametersInterceptor
- 開発者への通知 (struts.devMode を false に設定して、このメッセージを無効にします): 'クラス com.codedeart.vikos.action.UserAction で 'email' を設定中に予期しない例外がキャッチされました: 値 '[Ljava.lang.String' で式 'email' を設定中にエラーが発生しました;@7e227c19'
13:21:42.775 [http-bio-80-exec-7] エラー coxiParametersInterceptor
- 開発者通知 (このメッセージを無効にするには、struts.devMode を false に設定します): 'class com.codedeart.vikos.action.UserAction で 'firstName' を設定中に予期しない例外がキャッチされました: 値 '[Ljava.lang.String で式 'firstName' を設定中にエラーが発生しました;@378da3ff'
13:21:42.776 [http-bio-80-exec-7] エラー coxiParametersInterceptor
- 開発者通知 (このメッセージを無効にするには、struts.devMode を false に設定します): 'class com.codedeart.vikos.action.UserAction で 'lastName' を設定中に予期しない例外がキャッチされました: 値 '[Ljava.lang.String' で式 'lastName' を設定中にエラーが発生しました;@3409d6d7'
13:21:42.778 [http-bio-80-exec-7] エラー coxiParametersInterceptor
- 開発者通知 (struts.devMode を false に設定して、このメッセージを無効にします): 'class com.codedeart.vikos.action.UserAction で 'middleName' を設定中に予期しない例外がキャッチされました: 値 '[Ljava.lang.String' で式 'middleName' を設定中にエラーが発生しました;@13b29db7'
更新 2:
この問題は、 Custom Type Convertersを使用して修正した他の人によって報告された問題と似ているようです。このチュートリアルに基づいて、カスタム型コンバーターを実装しようとしました。私のメソッドが起動していないため、実際に型変換を行う段階にはまだ達していませUserTypeConverter
ん。最新のコードを BitBucket にアップロードしました。
PS:
JSP とバックエンド Struts の実装に問題がありました。答えは、以下の Uchenna と Roman の両方から提供されたアドバイスに従うことです。私は BitBucket で自分のプロジェクトを更新し続けるので、他の人がこれらの間違いを犯す必要がなくなることを願っています。