問題タブ [struts2-interceptors]
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.
struts2 - Custom Interceptor から以前の Jsp のプロパティにアクセスする方法は?
タグを使用してプロパティとしてアクセスする Action クラスで使用する文字列は、値スタックに格納されますか?
name = userの textInput フィールドを持つフォームを持つ JSP1 という JSP があります。
フォームを送信すると、Action クラスが呼び出されます。ゲッターとセッターを使用してアクセスできます。
値スタックから取得しようとしました
しかし、それは null を返します。
また、CustomInterceptor クラスに getter と setter を持つ String 変数を持たせようとしました。それも目的を果たせませんでした。
インターセプターに値を取得する方法は?
jsp - ミューテーターとアクセサー (セッター/ゲッター) のないパラメーターと、Struts 2 のパラメーター インターセプター
次のアクション クラスでは、パラメーター インターセプターを使用しています。
以下は次のとおりです<s:form>
。
ここでは、非表示のフォーム フィールドextraParam
が宣言されていないため、アクション クラスにセッターとゲッターがありません。
この場合、このフォームが送信されると、サーバー端末に次のメッセージが表示されます。
SEVERE: 開発者通知 (struts.devMode を false に設定してこのメッセージを無効にします): 'class actions.TestAction で 'extraParam' を設定中に予期しない例外がキャッチされました: 値 ['', ] で式 'extraParam' を設定中にエラーが発生しました
params.excludeParams
extraParam
アクションクラスのようにパラメーターを除外しません。
パラメータインターセプターを使用しているときに、このような例外をどうにかして防ぐことはできますか? このようなメッセージは、アクション メッセージに不必要に追加され<s:actionmessage/>
、使用されている場合は、まったく表示されないはずのときに を介して表示されます。
これparamsPrepareParamsStack
をアクション クラス then に置き換えるとdefaultStack
、そのようなメッセージは表示されません。次のように警告を出すだけです。
警告: パラメータ [extraParam] はパターンの excludeParams リストにあります!
そのようなメッセージを無効にするように設定してください。struts.devMode
false
java - HashMap に入力を設定できません
ループに次のような入力があります。
そして、私のJavaファイルには、
しかし、jsp で生成された入力ごとに、コンソールには次のように表示されます。
だから私のHashMapはnullです
java - struts2 インターセプターと Web サーブレット
アクションが関連付けられていないページに Struts2 インターセプターを使用することはできますか? すべてのユーザーがログインする必要があるように、インターセプターを実装しようとしています。しかし、私のサイトの他のページは Web サーブレットであり、アクションやストラットに依存していません。どうすればそれを達成できますか?インターセプターを使用するためだけにアクションやアクション クラスを作成したくはありません。
java - 特定のアクションの Struts 2 検証を防止する
異なるアクション クラスに 2 つのアクションがあります。2 つのアクションは次のとおりです。
- 最初のアクション (フィールド: メール)
- 2 番目のアクション (フィールド: email、firstName)
どちらもUser
オブジェクトを使用してフィールドを検証しています
User
クラスの検証プロパティを次のようにバインドします
今問題は、私が提供したフィールドを含む2番目のアクションに対して1st action
(フィールドとして含まれていない)、正常に機能することですfirstName
firstName
この最初のアクションが機能しなくなったため、firstName
存在しないものを検索する可能性があります
firstName
では、 2番目のアクションに対してのみ検証を行うにはどうすればよいですか? (最初のアクションではありません)
security - Struts2 に CSR 偽造防止コードを実装するには?
クロスサイト リクエスト フォージェリ攻撃を防ぐために、struts.xml とすべてのフォームにインターセプターを追加しました。私は他に何かすべきかどうか疑問に思っていますか?自動的に行われない場合に備えて、トークンを取得し、フォームとともに送信するものと照合するなど。
すべてのフォームは
validation - struts2のバリデーションとprepareメソッド関連
顧客のすべての詳細を含むJSPページを表示する custprofileview
アクションがあり、私のJSPではすべてのフィールドが私のようなものです
そして、 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
ました。
送信ボタンをクリックして検証しようとすると、検証が実行されますが、すべてのテキストボックスのデータが空白になるため、画面にすべてのフィールドのメッセージが表示されます。
データが削除されるのはなぜですか?
java - Struts 2 でインターセプターを使用すると NullPointerException が発生する
これは私のWelcomeAction
クラスです:
これは私のstruts.xml
ファイルです:
インターセプターを使用しようとしましたが、コメントを外すとNullPointerException
スローされます。
私はStruts 2が初めてで、理解しようとしています。私はインターセプターとこのチュートリアルからの学習のトピックに取り組んでいます。