読者です 読者をやめる 読者になる 読者になる

S2Strutsの拡張タグライブラリで、submit,imageに追加されているaction属性がすばらしい

スポンサーリンク

action="#{component.method}"と記述することによって、サブミット時に実行するコンポーネントとメソッドを指定する事が可能です。 コンポーネントは、この属性で指定した名前でS2Containerに登録されている必要があります。
indexId属性を指定しない場合は、引数なしとして指定されたメソッドを呼び出します。
例えば、 と記述して表示されたボタンを押した場合、 String create() メソッドが呼び出されます

これを使うと、同一フォーム内に複数のsubmitがあって、それぞれ別のメソッドを呼び出したいって場合に、簡単に実装できます。LookupDispatchActionと比べてかなり楽です。(DispatchActionは、日本語でのボタン名って考えると使えないし…)
すばらしいです!


ちょっと気になったのは、、
アクションパス名じゃなくて、コンポーネント.メソッド名で指定になっていることを考えると、ActionConfigとのマッピングはどうとっているのか不思議です。
html:formで設定しているアクションパス名を使ってFormやValidationとのマッピングは行って、呼び出すメソッドだけ、ここで指定したものになるってことかな…