- - PR -
StrutsのValidatorでエラーが起こったあとの遷移先
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-07-06 14:54
***** 環境 *************************************************
・Windows2000(SP4) ・Tomcat5.0.28 ・j2sdk1.4.2 ・Eclipse2.1.3 ・struts1.2.4 ***** 状況 ************************************************* MY_cre_upd.jspで、submitボタンを押下した場合、 StrutsのValidatorFormのValidateメソッドが走り、 エラーの場合は、err.doのActionに行くという処理を行いたいのですが、 HTTPステータス 500 - パス /err に対するアクションのインスタンスがありません と怒られてしまいます。 どなたか、ご教授いただけないでしょうか? ちなみに、<action path="/input"〜のところの、 input="/err.do"を、input="/init.do"にすると、 init.doのアクションに行くのですが・・・。 ***** フォルダ構成 ************************************************* WEB-INF |-- classes |-- dtd |-- jsp | |-- MY_cre_upd.jsp | |-- MY_cre_err.jsp | |-- MY_cre_conf.jsp |-- lib |-- src | |--my | |--action | |--MY_action_web.java | |--MY_action_error.java |-- tld ***** ソース ************************************************* [[[ My_cre_upd.jsp(一部) ]]] <html:form action="/input" method="POST"> <table cellSpacing="0" cellPadding="5" border="1" bordercolor="CCCCAA"> <tr valign="top"> <td class="header"><font size="2">名前</font></td> <td class="body" align="left"> <html:text property="s_name" name="actionform" styleClass="text" maxlength="40" size="40" /> </td> </tr> </table> <html:submit property="s_submit" value="送信" styleClass="button" style="width:80px;" /> </html:form> [[[ struts-config.xml ]]] <struts-config> <form-beans> <form-bean type="my.form.MY_form_input" name="inputForm" /> </form-beans> <global-forwards> <forward name="inputpage" path="/init.do" /> <forward name="errorpage" path="/err.do" /> </global-forwards> <action-mappings> <action path="/init" type="my.action.MY_action_web"> <forward name="upd" path="/WEB-INF/jsp/MY_cre_upd.jsp" /> </action> <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"> <forward name="upd" path="/WEB-INF/jsp/MY_cre_conf.jsp" /> </action> </action-mappings> <controller nocache="true" /> <message-resources parameter="resources.application"/> <plug-in className="org.apache.struts.validator.ValidatorPlugIn"> <set-property property="pathnames" value="/WEB-INF/validator-rules.xml, /WEB-INF/validation.xml"/> <set-property property="stopOnFirstError" value="true"/> </plug-in> </struts-config> ***** 結果 ************************************************* 2005/07/06 14:33:55 org.apache.struts.action.RequestProcessor processActionCreate 致命的: パス /err に対するアクションのインスタンスがありません java.lang.ClassCastException at org.apache.struts.action.RequestProcessor.processActionCreate(RequestProcessor.java:282) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:220) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:704) at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:474) at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:409) at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:312) at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1056) at org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(RequestProcessor.java:994) at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:959) at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:206) at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164) at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415) at javax.servlet.http.HttpServlet.service(HttpServlet.java:709) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:186) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:118) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:534) [ メッセージ編集済み 編集者: まいこ 編集日時 2005-07-06 14:55 ] |
|
投稿日時: 2005-07-06 15:33
フォルダ構成がわかりずらいですね。。。
WEB-INF □□|-- classes □□|-- dtd □□|-- jsp □□|□□|-- MY_cre_upd.jsp □□|□□|-- MY_cre_err.jsp □□|□□|-- MY_cre_conf.jsp □□|-- lib □□|-- src □□|□□|--my □□|□□□□|--action □□|□□□□□□|--MY_action_web.java □□|□□□□□□|--MY_action_error.java □□|-- tld □の部分はスペースだと思ってください。 (というか、どうやったらスペースが入るのでしょうか???) |
|
投稿日時: 2005-07-06 16:20
るぱんです。
struts configの actionタグだったと思いますが、 inputという属性があります。 そこらへんの本屋で調べてみると何かつかめると思います。 |
|
投稿日時: 2005-07-06 16:43
こんにちは。
ClassCastExceptionが発生していますので、 MY_action_error.java の型が怪しいと思います。 org.apache.struts.action.Actionを継承したクラス になっていますか? |
|
投稿日時: 2005-07-06 22:03
るぱん様・masa様、レスありがとうございます。
まさに、MY_action_errorの継承が抜けておりました! actionパッケージの中に入れていたので、 もう「extends Action」は書いてある!と思い込んでしまい、 見落としておりました・・・。 お忙しい中、本当にありがとうございました! |
1