問題タブ [dmi]
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.
java - Struts 2 で単一のフォームで複数のアクションを処理する方法
フォームに 3 つのボタンprint
/ export
/が含まれていますsave
。
これをどのようにマッピングできstruts.xml
ますか?
java - アクションのexecute()メソッドを忘れるためにStruts 2の規則を作成する必要がありますか?
私はStruts2とstruts2-convention-pluginSongCrudAction
を使用して最初のステップを実行しており、現在、いくつかの典型的な、、およびアクションメソッドを使用してCRUDアクションクラス()にcreate()
取り組んedit()
でview()
いdelete()
ます。これらのメソッドはすべて。で注釈が付けられてい@Action
ます。
一般的に、便利なデフォルトの動作をから継承したいのですが、これにはメソッドActionSupport
の継承も含まれます。execute()
song-crud
構成ブラウザーを使用すると、それを指すという名前のアクションがあることがわかります。そのsong-crud
アクションは廃止されており、必要なすべての操作に対して独自のアクションメソッドがあるため、これを削除したいと思います。Struts2の規則のおかげで、song-crud
私はどこにも宣言していませんが、そのアクションが想定されていると思います。
この特定のケースでは、考えられる解決策の1つは、メソッドに合理的な意味を与えることです。execute()
たとえば、view()
操作に使用できます。欠点は、アクションクラスの名前をexecute()
メソッドの動作に応じて(たとえばViewSongAction
ではなく)変更する(または注釈を付ける)必要があることですSongCrudAction
。そうしないと、ビューアクションのURLが不適切になります(つまり/view-song?id=5
、よりも適切になります/song-crud?id=5
)。
一方、クラスの名前変更も醜いものになります。これは、単なるCRUDであり、ビューアクションクラスではないためです。
とにかく、一般的な問題は残っています:私がから継承するときはいつでも、それは私がしていることに役立つかもしれないし、そうでないかもしれないメソッドをActionSupport
私に提示します。execute()
execute()
したがって、Struts 2に、私のCRUDアクションクラスのメソッドを例外的に忘れるように指示するのは合理的と思われます。それは正しいですか、どうすればそれを達成できますか?より良い解決策はありますか?
java - アクションまたは結果が見つかりませんでした。Struts 2 のアクションに対して結果が定義されていません
値をテキストとして返すように注釈を構成しました。しかし、それは私にエラーを与えています: could not find action or result
.
コンソール エラー:
アクション:
java - Codebehind プラグインのアクセス パスは .action ですか?
Codebehind プラグインを使用して Struts 2 のアクションとしてメソッドにアクセスできますか? struts.xml
ファイルがなくaction!method
、URL のように機能するためです。
メソッドにアクセスしたいだけです
クラスでStrutsタグを使用するには?
クラス :
送信ボタンのクリックで以下のメソッドにアクセスすると、JSON データを取得できますか?
したがって、URLのアクションに次のようにアクセスできます
localhost:7001/Sample/JSONmethod.action
JSONデータを取得するには?
jquery - JQuery Ajaxフォーム送信とStruts 2の同じフォームでの通常の送信
Struts タグ<s:submit>
と <sj:submit>
同じフォームで動作しますか? Struts ボタンは既にあります<s:submit>
が、追加しまし<sj:submit>
た。
つまり、Struts 2 jQuery プラグインボタンは正常に機能していますが、Struts<s:submit>
は機能していません。
java - Struts 2 S2-016 アップグレードまでの脆弱性の緩和
最近、Struts は攻撃者がリモート コードを実行できる脆弱性にパッチを適用しました。どうやらこれにパッチを当てないことは、ブラックハットに時流でレッドカーペットを歓迎するようなものです.
http://struts.apache.org/release/2.3.x/docs/s2-016.html
基本的に、次のような攻撃コマンドの実行を許可します。
正当な行為:
http://host/struts2-showcase/employee/save.action?redirect:%25{3*4}
悪用されたアクション:
http://host/struts2-showcase/employee/save.action?redirect:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}
できるだけ早くアップグレードする必要があることは承知していますが、コード ベースは古いバージョンの Struts とプラグインを使用しているため、できるだけ早くアップグレードするには時間がかかります。
これには、Struts 2 ライブラリをアップグレードするためのリファクタリングが必要です。その後、それらをテストする必要があります。
したがって、私の質問は、この脆弱性が実行されるのを阻止する考えがあるかどうかです。これは、アップグレードできるようになるまでの期間のみです。
OGNL に対して評価される前に URL をサニタイズするインターセプターを作成することが可能かどうか疑問に思っていました。
私が持っていた他のアイデアは、何らかの形でJavaセキュリティマネージャーを使用して任意のプロセス呼び出しを停止することでした.これは可能ですか? 一時的に穴を塞ぎますか?
使用されているサーバーは、誰かが関連性があると考える場合、jBoss です。