問題タブ [model-driven]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
4805 参照

java - JSP を使用しているときに、Struts 2 ModelDriven インターフェイスを使用して POJO のプロパティにアクセスする方法は?

インターフェイスを実装するアクション クラスがありModelDrivenます。これModelDrivenは通常の POJO です。問題は、そのプロパティの 1 つが別のオブジェクトであることです。

私の ModelDriven is a object calledPerson and my person has an attribute calledAddress that is another object.Address has regular properties such asString , Long などを想像してみてください。

フォームを送信するときの JSP ではString、 、intlonginなどの通常のプロパティPersonはすべて正しくマップされますが、アドレスにマップする必要があるすべてのデータは正しくマップされません。

それが私がプロパティをマッピングしようとする方法です。名前のプロパティは正しく理解できますが、個人の住所にプロパティをマッピングする場合、このアプローチは機能しません。

私は何を間違っていますか?

やがて、私のAddressプロパティはPersonオブジェクトのインスタンス化で宣言されるので、決してnull.

編集:要求に応じて、アクション ソースと DTO:

アクション:

メインクラスFakeDTO

クラスFakeFilterDTO:

struts.xml:_

は、 をproject-default含む include struts-config.xmland extendsstruts-defaultパッケージに配置されますModelDrivenInterceptor。このインターセプターとそこを通過するブレークポイントにブレークポイントを配置したため、それを保証できます。

前に例として使用した JSP は次のようになります。

会社のポリシーにより、実際のオブジェクトとその名前をコピー/貼り付けすることは許可されていません。しかし、それがアイデアです。

0 投票する
1 に答える
956 参照

java - 実際のユーティリティ クラス オブジェクトのプロパティにエイリアス インターセプタを使用する方法

次のように、変数と変数を持つという名前のActionクラスがあります。MyFirstClassStringUser

UserクラスにはとのString変数がuserNameありuserAgeます。

私のActionクラスはインターフェイスを実装しているため、クラスModelDrivenの変数はUserリクエストで取得/設定する必要があります。

次のように設計されたJSPファイルもあります。

次のようにstruts.xml設計されています。

私の問題は次のとおりです。

UserJSP ページのテキスト フィールドの名前がクラスのプロパティ名と一致しないためです。aliasこのように、インターセプターを使用してアクションの対応するプロパティに要求パラメーターを設定することはできません。

0 投票する
1 に答える
1406 参照

drop-down-menu - Struts2 のモデル駆動型アクション クラスでドロップダウン リストを使用する

データベースからデータを入力して<s:select>います。アクション クラスはモデル駆動型です。

以下は次のとおりです<s:select>

これは完全に機能します。


<s:select>を実装する別のアクション クラスでこれが必要ModelDriven<ZoneTable>です。

テーブル構造はシンプルですtransporter->zone_table->country->state->city。これらのテーブル間には 1 対多の関係があります。

などにマップできるモデル駆動型のアクション クラスを実装ModelDrven<ZoneTable>するにはどうすればよいでしょうか。Transporter<s:select>

このようにやってもうまくいきません。transporterIdアクションクラスが実装されModelDriven<ZoneTable>ており、最初のケースとは異なるため、送信時に値を設定しませんModelDriven<Transporter>

これは、モデル駆動型アプローチを使用して可能ですか?


編集:

ZoneTable.java

Zone.jsp

この投稿には既に多くのコードが含まれているため、ZoneAction.javaここではアクション クラスを投稿しません。必要な場合は、こちらから入手できます。

0 投票する
2 に答える
23767 参照

java - 「クラス xxx で 'xxx' を設定中に予期しない例外がキャッチされました: 値 ['x', ] で式 'xxx' を設定中にエラーが発生しました

ModelDriven<Transporter>クエリ文字列を介して実装するアクション クラスにいくつかのパラメーターを渡しています。

アクション クラスは次のとおりです。

サーバー端末に次のメッセージが表示されます。

ログ レベルは ですがSEVERE、これらのパラメーターの値はアクション クラスで次のように使用できます。

edit()メソッドで。

paramsPrepareParamsStackを then に置き換えると、defaultStackこれらのメッセージは消えます。

のような式['DHL', ]は配列を示します。ただし、モデル内の と は、タイプtransporterIdおよびそれぞれです。transporterNameLongString

私は何を間違っていますか?

0 投票する
2 に答える
1538 参照

java - POST リクエストは、Struts 2 の ModelDriven を使用してフォームの値をモデルにロードしません。

Struts 2 とのインターフェイスを使用して動的な Web アプリケーションを作成しようとしていModelDrivenます。Struts1 を使用したことはありますが、Struts 2 での試みはこれが初めてです。

データベースに保存されている値からフォームを作成できますが、値を変更してデータベースを更新しようとすると、フォームの値がモデルに読み込まれません。

プロジェクト全体をここにアップロードしました(この時点で実行するには MySQL データベースが必要です)。

プロジェクトをロードしたら:

  1. に進みhttp://localhost/Vikos/secure/userます。
  2. ログインページに移動します。次を入力logon email = consumer@test.compassword = passwordます。
  3. Userデータベースから入力されたフォームを含むページが表示されます。Last Name フィールドを更新して<Update>ボタンをクリックすると、データベース内の値が更新されますが、値が返されません。

HTMLフォームからモデルに値を取得する方法は?

アップデート:

この投稿のタイトルを変更し、内容を少し修正して、何が起こっているかをより正確に説明しました。また、メソッドにいくつかのデバッグ コードを追加しましたUserAction.prepare()。Struts2 は、パラメータ配列の最初の要素 ( ) ではなくUserModel、文字列配列 ( ) を使用してプロパティをロードしようとしているようです。parmValuescorrectVal

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 で自分のプロジェクトを更新し続けるので、他の人がこれらの間違いを犯す必要がなくなることを願っています。