使用 Struts Validator(1)
作者: 来源:it167 点击: 日期:2007-01-28 |
|
|
试着访问这个页面,会生成错误;还有许多工作要做(有时让 Struts 好的事情 —— 声明性异常、高度可配置的表单等等 —— 反而让它难以迅速就位运行)。在这一阶段,应当得到类似清单 9 所示的消息:
清单 9. 错误消息
javax.servlet.ServletException: Cannot retrieve mapping for action /SubmitValid
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(
PageContextImpl.java:848)
org.apache.jasper.runtime.PageContextImpl.handlePageException(
PageContextImpl.java:781)
org.apache.jsp.pages.test_002dvalidation_jsp._jspService(
org.apache.jsp.pages.test_002dvalidation_jsp:102)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(
JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(
JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.action.RequestProcessor.doForward(
RequestProcessor.java:1056)
org.apache.struts.tiles.TilesRequestProcessor.doForward(
TilesRequestProcessor.java:261)
org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(
RequestProcessor.java:994)
org.apache.struts.tiles.TilesRequestProcessor.internalModuleRelativeForward(
TilesRequestProcessor.java:343)
org.apache.struts.action.RequestProcessor.processForward(
RequestProcessor.java:553)
org.apache.struts.action.RequestProcessor.process(
RequestProcessor.java:211)
org.apache.struts.action.ActionServlet.process(
ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doGet(
ActionServlet.java:397)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802) root cause
javax.servlet.jsp.JspException: Cannot retrieve mapping for action /SubmitValid
org.apache.struts.taglib.html.FormTag.lookup(FormTag.java:723)
org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:419)
org.apache.jsp.pages.test_002dvalidation_jsp._jspx_meth_html_form_0(
org.apache.jsp.pages.test_002dvalidation_jsp:150)
org.apache.jsp.pages.test_002dvalidation_jsp._jspService(
org.apache.jsp.pages.test_002dvalidation_jsp:92)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(
JspServletWrapper.java:322)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:291)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.struts.action.RequestProcessor.doForward(
RequestProcessor.java:1056)
org.apache.struts.tiles.TilesRequestProcessor.doForward(
TilesRequestProcessor.java:261)
org.apache.struts.action.RequestProcessor.internalModuleRelativeForward(
RequestProcessor.java:994)
org.apache.struts.tiles.TilesRequestProcessor.internalModuleRelativeForward(
TilesRequestProcessor.java:343)
org.apache.struts.action.RequestProcessor.processForward(
RequestProcessor.java:553)
org.apache.struts.action.RequestProcessor.process(
RequestProcessor.java:211)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:397)
javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
|
Struts 老手会认出这个错误消息的意义是:在 pages/validation-test.jsp 中定义了一个叫做 SubmitValid 的动作,但是在 struts-config.xml 文件中没有匹配的 action 元素。还有其他相关问题:还需要 form-bean。下面我将处理这两个问题。
配置验证测试页面
首先来处理遗漏的 SubmitValid 动作。请把清单 10 中的条目添加到 struts-config.xml 文件:
清单 10. struts-config.xml 文件的条目
<action-mappings>
<!-- Default "Welcome" action -->
<!-- Forwards to Welcome.jsp -->
<action
path="/Welcome"
forward="/pages/Welcome.jsp"/>
<action path="/TestSimpleValidation"
forward="/pages/test-validation.jsp" />
<action path="/SubmitValid"
type="com.ibm.struts.validation.ValidationAction"
name="ValidationForm"
scope="request"
validate="true"
input="/pages/test-validation.jsp">
<forward name="success" path="/pages/success.jsp" redirect="true"/>
<forward name="failure" path="/pages/test-validation.jsp"
redirect="true" />
</action>
</action> <!-- Other action elements -->
</action-mappings>
|
|