[Seasar-user:5617] Re: [s2struts] MethodBindingとvalidation.xml

Katsuhiko Nagashima [E-MAIL ADDRESS DELETED]
2006年 12月 27日 (水) 00:29:27 JST


永島です。

> これをActionの命名規則からbarActionが呼ばれるときはbarFormが渡されるようにできないでしょうか。

ご指摘ありがとうございます。
検討させてください。

> 上記のサンプルで、メソッドが存在しないときの動作はどのようになるのでしょうか。例えば、#{xxxAction.yyy}"で、xxxActionがない場合やyyyメソッドがない場合などです。

実行時に以下の例外が発生します。
・ComponentNotFoundRuntimeException
・MethodNotFoundRuntimeException

> MethodBindingを使ってメソッドを実行する際には、Base64でエンコーディングされた文字列が渡されているようですが、DispatchActionのときのように、/foo.do?command=xxxxのような感じで呼ぶことはできるのでしょうか。リダイレクト処理のときどうすればいいか悩んでいます。

DispatchActionのように
Actionのアノテーションでparameter=commandと指定し、
/foo.do?command=doCalcのような感じで
メソッド名(Base64でエンコーディングされた文字列ではなく)を指定すれば呼び出せます。

以上です。

06/12/23 に Shinichiroh Takezaki [Virtual
Technology]<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 竹崎です。
>
> 大事な質問を一つ忘れていました。
>
> MethodBindingを使ってメソッドを実行する際には、Base64でエンコーディングされた文字列が渡されているようですが、DispatchActionのときのように、/foo.do?command=xxxxのような感じで呼ぶことはできるのでしょうか。リダイレクト処理のときどうすればいいか悩んでいます。
>
> よろしくお願いします。
>
>
>
> 06/12/23 に Shinichiroh Takezaki [Virtual Technology]
> <[E-MAIL ADDRESS DELETED]> さんは書きました:
> > 竹崎です。
> >
> > 返事が遅くなりすみません。
> > また、いつもながらご丁寧な解説、ありがとうございます。
> > 検証ルールには優先順位があって、validation.xmlが最初ということで、理解できました。
> > javascriptの出力は、私の勘違いだったようです。大変失礼いたしました。
> >
> > ところで、教えていただいたMethodBindingに関しまして、提案と質問がございます。
> >
> > まず、提案からです。
> >
> >
> 以下のように、1つのHTML:FORMのなかから異なるActionを呼ぶ際に、fooAction.executeとbarAction.executeには、どちらも同じfooFormが渡ってくるようです。
> >
> > −−−−
> > <html:form action="/foo" styleId"fooForm">
> >
> > <html:text property="property1" /> // fooForm.property1
> > <s2struts:submit action="#{fooAction.execute}" >
> > </s2struts> // fooForm
> >
> > <s2struts:submit action="#{barAction.execute}" >
> > </s2struts>
> >
> > </html:form>
> > −−−−−−
> >
> >
> これをActionの命名規則からbarActionが呼ばれるときはbarFormが渡されるようにできないでしょうか。fooFormも作られるはずなので内部的には2つのFormが作られるようなイメージです。
> >
> > barForm
> が作られることで、barAction、bar.jspはbarFormだけを見ればよくなります。validationに失敗した場合、もしくは、
> Action内でエラーでinputに戻る場合は、fooFormで入力した値を保存しておくことで対応します。fooFormからbarFormへの変
>> はHTTPプロトコル(GETパラメータに入ってくる値)によってマッピングされるはずなのでうまく変換されると思います。
> >
> > あまりよい考えではないでしょうか。
> >
> > 次に質問の方です。
> >
> >
> 上記のサンプルで、メソッドが存在しないときの動作はどのようになるのでしょうか。例えば、#{xxxAction.yyy}"で、xxxActionがない場合やyyyメソッドがない場合などです。
> >
> > 以上、よろしくお願いします。
> >
> > 06/12/17 に Katsuhiko Nagashima <[E-MAIL ADDRESS DELETED] > さんは書きました:
> >
> > > 永島です。
> > >
> > > 「1.」については期待通りです。
> > >
> > > > 同時に、Formのアノテーションを記述すると動かないようです。
> > >
> > > というのは、validationxmlに記述した内容のチェックだけが有効に
> > > なったということだと思うのですが、
> > > 検証のルールについては以下で少し補足します。
> > >
> > > FormBeanの検証ルールの優先順位は
> > > 1.validation.xml等の記述
> > > 2.アノテーションによる記述
> > > となっていて、validation.xmlに記述があれば、アノテーション有無に関係なく
> > > そちらが有効になります。
> > > あと、FormBeanの単位で
> > > validation.xmlでの記述とアノテーションによる記述に別けることはできますが、
> > > 1つのFormBeanのプロパティごとに
> > > validation.xmlでの記述とアノテーションによる記述を別々にすることはできません。
> > >
> > > > 2.Actionのアノテーションには、「無指定」、かつ、Formのアノテーションは
> > > > 「Validationのルールを記述」をする場合、
> > > >
> Formの定数アノテーションが有効になった。また、MethodBindingのcancel=trueも問題なく動作した。
> > > > jspにjavascriptタグを記述しても無視された。
> > > > 同時に、Actionのアノテーションで「validate=XXX」を指定すると動かないようです。
> > >
> > > Formのアノテーションで記述した場合でもhtml:javascriptタグを記述した場合
> > > 検証用のjavascriptは出力されると思います。
> > > Actionのアノテーションでvalidate=true又はvalidate=falseを指定した場合も
> > > それぞれ検証ありなしとして動作していますが、
> > > なにが動かないのか教えていただいてもよろしいでしょうか。
> > >
> > > 以上です。
> > >
> > > 06/12/15 に Shinichiroh Takezaki [Virtual
> > > Technology]<[E-MAIL ADDRESS DELETED]> さんは書きました:
> > > > 竹崎です。
> > > >
> > > > いつもお世話になっております。
> > > >
> > > > MethodBindingとValidationの動作について調べたところ、以下のようになりました。
> > > >
> > > > JSPにMethodBindingタグなどを記述してValidationの動作を確認します。
> > > >
> > > > 1.Actionのアノテーションには  「validate=true」 を指定、 かつ、
> Formのアノテーションは 「無指定」の場合、
> > > > validation.xmlによる検証が有効となった 。(メソッド単位ではなくFORM単位の検証)
> > > > また、MethodBindingのcancel=trueも問題なく動作した。
> > > > jspにjavascriptタグを記述するとJavascriptが埋め込まれた。
> > > > 同時に、Formのアノテーションを記述すると動かないようです。
> > > >
> > > > 2.Actionのアノテーションには、「無指定」、かつ、Formのアノテーションは
> > > > 「Validationのルールを記述」をする場合、
> > > >
> Formの定数アノテーションが有効になった。また、MethodBindingのcancel=trueも問題なく動作した。
> > > > jspにjavascriptタグを記述しても無視された。
> > > > 同時に、Actionのアノテーションで「validate=XXX」を指定すると動かないようです。
> > > >
> > > > プロジェクトとしては、validation-rules.xmlを独自に拡張したいため、1.のやりかたを採用することを考えています。
> > > >
> > > > 以上のような動作は期待通りと思ってよろしいでしょうか。
> > > > よろしくお願いします。
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > _______________________________________________
> > > > Seasar-user mailing list
> > > > [E-MAIL ADDRESS DELETED]
> > > > https://ml.seasar.org/mailman/listinfo/seasar-user
> > > >
> > > >
> > > >
> > >
> > >
> > > --
> > > Katsuhiko Nagashima
> > > _______________________________________________
> > > Seasar-user mailing list
> > > [E-MAIL ADDRESS DELETED]
> > > https://ml.seasar.org/mailman/listinfo/seasar-user
> > >
> > >
> >
> >
> >
> >
>
>
>
> --
> _/   有限会社バーチャルテクノロジー代表 竹嵜 伸一郎
> _/  Virtual Technology, Ready to WEB2.0
> _/   Phone: 070-6452-4347 Fax: 020-4666-0882
> _/   http://www.virtual-tech.net/
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
>


-- 
Katsuhiko Nagashima



Seasar-user メーリングリストの案内