URLに渡されたパラメータに問題があります。 があるということ、/struts/MyAction.action?param=foo%40bar.comStruts 2.0.14 GETパラメータがURLデコードされていない、それはバグですか?
アクションフィールドが「PARAM」フィールドセットに「FOO%40bar.com」を取得します。
レッツは、要求があると言いますバグやStrutsからあまりにも多くを期待していますか?
私の直感では、「[email protected]」という値を取得する必要があることを私に教えています。たとえば、POSTフォームフィールドとしてそのパラメータを渡すと起こります。
私はデフォルトのインターセプタスタックを使用しています。私のアクションクラスはActionSupportを拡張しています。私はWebSphere6.1のいくつかの動作を得ます。& GlassFish2.1。
おかげ
こんにちは再び、
問題は、プロキシの実装のバグによって引き起こされました。 Webアプリケーションの前に立っていたカスタムプロキシサーバーを作成しました。 2回目のURLパラメータをエンコードしていたので、Strutsでは@の代わりに%40がありました。 バグが修正され、パラメータが正しく渡されています。私はStruts2のパラメータを復号化するための責任があるとは思わないが、むしろ、サーブレット・コンテナは、例えばある
フィールドをパブリックとして公開するのではなく、ゲッターとセッターを使用する必要があります。これはJavaの一般的なベストプラクティスです。 –
strutsでは、検証メソッドで検証を行うことになっていますが、getterとsetterはget/set以外には何もしません。パラメータの制約も他の場所で処理されます...アクションのクラスは薄いので、そのような(と本当に簡単にIDEのリファクタリングで)。一般的には良いアイデアですが、私がアクションを行う方法は、その効果はかなり抽象的に見えますが、それを加えないと読みやすさが向上します。 OTちょうどFYI、休止状態は、(バイトコードの書き換えを介して)プライベートフィールドの設定がエキゾチックな話をすることさえできます!私はget/setが「ベストプラクティス」であることに同意しますが、必ずしもベストではありません。 – Quaternion
こんにちは、それは実際にフォームではなく、生成された電子メールのアクションへのリンクです。クラスパスは大丈夫だと思われ、ログには何の心配もありません。私はStruts 2.2.1を試し、何か変更があるかどうかを確認します –