- - PR -
Actionクラスで、ActionErrorsを取得
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-07-06 22:16
***** 環境 *************************************************
・Windows2000(SP4) ・Tomcat5.0.28 ・j2sdk1.4.2 ・Eclipse2.1.3 ・struts1.2.4 ***** 状況 ************************************************* ActionFormクラスのValidate()メソッドで、エラーが発生した場合に、 Actionクラスの方でそのエラーが発生したかどうかは どのエラーか発生したのかはわからなくてもよいので、 (ActionErrorsクラス).isEmpty()のような感じで 取得できるものなのでしょうか? もしできるとするならば、どのようにコーディングをすればよいのか、 どなたかご教授をお願いいたします。 ***** ソース ************************************************* [[[ My_form_input.java ]]] public class My_form_input extends ValidatorForm { private String name; public String getName() { return name; } public void setName(String pname) { name = pname; } public ActionErrors validate(ActionMapping p_map, HttpServletRequest p_req) { boolean b_ok=false; ActionErrors errors = new ActionErrors(); if(errors.isEmpty()){ errors = super.validate(p_map, p_req); } if(errors.isEmpty()){ if(name.equals("aaaa") == true){ ActionMessage message = new ActionMessage("errors.myname"); errors.add( "myname_error", message); } } return errors; } } [[[ struts-config.xml ]]] <action path="/err" type="my.action.MY_action_error"> <forward name="upd" path="/WEB-INF/jsp/MY_cre_err.jsp" /> </action> <action path="/input" type="my.action.MY_action_web" name="inputForm" scope="request" input="/err.do" validate="true"> [[[ MY_action_error.java ]]] public class My_action_error extends Action { public ActionForward execute(ActionMapping p_map, ActionForm p_form, HttpServletRequest p_req, HttpServletResponse p_res){ //ここの時点で、Validateのエラーはとれないものでしょうか? } } |
|
投稿日時: 2005-07-06 22:51
ActionForm#validator()が返すActionErrorsがnullでなければ、struts-config.xmlのactionタグのinput属性に指定したページに遷移します。
つまりこの場合、Actionクラスが実行されないと思います。 |
|
投稿日時: 2005-07-06 23:05
こんばんは。
このような遷移が一般的であるか、正しい使い方であるかは考えずにレスします。 HttpServletResponse p_res){ //ここの時点で、Validateのエラーはとれないものでしょうか? ActionMessages ms = getErrors(p_req); if (ms.isEmpty()) { System.out.println("エラーはないよ。"); } } } 試した訳ではありませんが、こんな感じで取得出来そうですよ。 |
|
投稿日時: 2005-07-07 11:12
tottmo様・masa様
* 初アクセスhttp://localhost:8080/〜/err.doにアクセス ↓ * my.action.MY_action_error ←*** DBアクセスなどをして、ActionFormにデータを入れ、 request.setAttributeをする。 ↓ * MY_cre_err.jspに遷移 <html:text>に、setAttributeしたデータを入れる。 ↓ * submitボタン押下 <form action="/input"> ↓ * Validateのチェック ↓ エラーあり:my.action.MY_action_error ←*** submitボタンを押した時点での入力データを ActionFormにつっこんで、request.setAttributeをする。 (DBアクセスなどは行わない。) ↓ * MY_cre_err.jspに遷移 <html:text>に、setAttributeしたデータを入れる。 ということをやりたかったのです。 <action path="/input" type="my.action.MY_action_web" name="inputForm" scope="request" input="/err.do" validate="true"> のinput属性に、最初MY_cre_err.jspを指定したのですが、 setAttributeしたものがありませんなどといわれてしまい・・・。 エラーの際に、初とは違うActionでしたらよかったのですが・・・。 MY_action_errorに来た際に、Validateで来たのか初アクセスで来たのかの 見分けがつかなくて、質問をさせていただきました。 このようにするのが普通なのかどうかはわからないのですが、 思いついた方法でしたので・・・。 masa様のコーディングで無事にValidateエラーが取得できました! とりあえず、これでがんばってみようかと思います。 またお世話になった時にはよろしくお願い申し上げます。 tottmo様・masa様、本当にありがとうございました。 |
1