[cubby-user:194] Re: Cubby 2.0.5 でのバリデーションの動きについて

ibara [E-MAIL ADDRESS DELETED]
2010年 2月 16日 (火) 13:38:16 JST


伊原です。
お世話になっております。

検証に時間がかかり、返信が遅くなってしまい申し訳ありません。

動作確認の方しましたが、問題が発生しました。

アクションクラスを

@ActionClass
public class HelloAction {..}

のように記述すると問題無く動作したのですが、

public class HelloAction extends Action{..}

とアノテーションを使用しない形でアクションクラスを定義すると、
InputTag#doTag() などで、定義されている 
final ActionErrors errors = ..
の errors に、ActionErrors ではなく、ActionErrorsProxy が設定されてしまう
ようで、errors.getFields() メソッドが呼ばれた際にループとなり、

java.lang.StackOverflowError
	at org.seasar.cubby.action.ActionErrorsProxy.subject(ActionErrorsProxy.java:114)
..

のようなエラーが発生してしまいます。

Actionクラスを継承する形で作成しているので、作成して頂いた
SNAPSHOTでも使用することは出来ませんでした。

以上になりますが
よろしくお願いします。

> 馬場です。
> 
> 動作の確認などしていたら返信がおそくなりました。
> すみません。
> 
> 想定していない使い方ではありましたが、挙動が変わってしまったこと自体は不
> 具合なので修正してみました。
> SNAPSHOT をデプロイしたので、ご確認していただいてもよろしいでしょうか?
> http://maven.seasar.org/maven2-snapshot/org/seasar/cubby/cubby/2.0.6-SNAPSHOT/cubby-2.0.6-20100215.174855-1.jar
> 
> よろしくお願いします。
> 
> 
> ibara さんは書きました:
> > 伊原です。
> > 
> > 返信ありがとうございます。
> > 
> >> すみません、その使い方はちょっと想定外でした。
> >> https://www.seasar.org/issues/browse/CUBBY-257
> >> この変更の影響です。
> >> アクションからアクションへ Forward した時、Forward 前の ActionErrors が
> >> 取得できないようになっています。
> > 確かに前のアクションで設定されたActionErrorsを他で取って来るというのは
> > 動きを考えると問題のある使い方だったと思います。
> > 
> > アクセスするユーザーの権限等で画面を切替えているのですが、同じ
> > アクションを使用してForward 先だけを変えるような使い方をしていた
> > ので、先述のような使い方をしてしまいました。
> > 
> > ご提案いただいた、DefaultValidationRules#fail() のオーバーライドでも
> > 確かに回避出来そうでしたが、errorPage で指定したアクションの中で
> > 処理をしているものもあったり、修正しなければならないバリデーションが
> > 非常に多くなることから、今回は 2.0.4 のままで開発を行うことにしました。
> > 
> > 以上になります。
> > ありがとうございました。
> > 
> >> 馬場です。
> >>
> >> すみません、その使い方はちょっと想定外でした。
> >> https://www.seasar.org/issues/browse/CUBBY-257
> >> この変更の影響です。
> >> アクションからアクションへ Forward した時、Forward 前の ActionErrors が
> >> 取得できないようになっています。
> >>
> >>> そもそもこのようなerrorPage の指定の仕方が誤りなのかもしれませんが
> >>> 条件によってエラーページを切り分けたい場合などがあるため、このような
> >>> HTMLではなく、アクションを記述をしていました。
> >> このような場合は、DefaultValidationRules#fail() をオーバーライドしてバリ
> >> デーションエラー発生時の挙動を変更することができます。
> >> http://cubby.seasar.org/20x/validation.html#%E3%82%A8%E3%83%A9%E3%83%BC%E7%99%BA%E7%94%9F%E6%99%82%E3%81%AE%E6%8C%99%E5%8B%95
> >> こちらで対応できないでしょうか?
> >>
> >>
> >>
> >> ibara さんは書きました:
> >>> 伊原です。
> >>>
> >>> Cubbyのバージョンを2.0.4から2.0.5にあげたところ
> >>> バリデーションの動きが変ってしまいましたので確認させてください。
> >>>
> >>> Mavenを使ってプロジェクトを作成した際に自動で作成される 
> >>> HelloAction はバリデーション後のエラーページの指定を
> >>>
> >>> @Validation(rules = "validation", errorPage = "index.jsp")
> >>> public ActionResult message() {..}
> >>>
> >>> のようにされていますが、この errorPage の指定を
> >>>
> >>> @Validation(rules = "validation", errorPage = "./")
> >>> public ActionResult message() {..}
> >>>
> >>> 上記のようにアクションメソッドを呼ぶように変更していました。
> >>>
> >>> 2.0.4 まではバリデーションエラーの内容が errors に格納されたまま
> >>> エラーページのアクションメソッドが呼ばれていたので、入力ページに
> >>> エラーメッセージが表示されていたのですが、2.0.5 では、errors が
> >>> クリアされているようで、エラーメッセージが表示されなくなりました。
> >>>
> >>> そもそもこのようなerrorPage の指定の仕方が誤りなのかもしれませんが
> >>> 条件によってエラーページを切り分けたい場合などがあるため、このような
> >>> HTMLではなく、アクションを記述をしていました。
> >>>
> >>> この変更は仕様変更なのかどうか、またこのようなエラーページを条件で
> >>> 切り分けたい場合にどのように記述するのが適切なのか返信をお願いします。
> >>>
> >>> - 環境 -
> >>> Java : jdk1.6.0_18
> >>> tomcat : tomcat 6.0.20
> >>> Mave2 : apache-maven-2.0.9
> >>>
> >>> s2,cubby はMavenから取得した最新と
> >>> 比較のため、比較のためcubbyのみ
> >>> 2.0.5 → 2.0.4 に変更しました。
> >>>
> >>>
> >>> 以上になりますが、
> >>> よろしくお願いいたします
> >>>
> >>> _______________________________________________
> >>> cubby-user mailing list
> >>> [E-MAIL ADDRESS DELETED]
> >>> https://ml.seasar.org/mailman/listinfo/cubby-user
> >>
> >> -- 
> >> BABA,Yasuyuki
> >> [E-MAIL ADDRESS DELETED]
> >> _______________________________________________
> >> cubby-user mailing list
> >> [E-MAIL ADDRESS DELETED]
> >> https://ml.seasar.org/mailman/listinfo/cubby-user
> > 
> > _______________________________________________
> > cubby-user mailing list
> > [E-MAIL ADDRESS DELETED]
> > https://ml.seasar.org/mailman/listinfo/cubby-user
> 
> 
> -- 
> BABA,Yasuyuki
> [E-MAIL ADDRESS DELETED]
> _______________________________________________
> cubby-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/cubby-user



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