dynaValidatorForm验证
//validation.xml
<form-validation>
<formset>
<form name ="helloForm">
<field property ="userName"
depends ="required">
<arg0 key ="hello.jsp"/>
</field>
</form>
</formset>
</form-validation>
<form-beans >
<form-bean name="helloForm" type="org.apache.struts.validator.DynaValidatorForm">
<form-property name="userName" type="java.lang.String" />
</form-bean>
</form-beans>
<action-mappings >
<action
attribute="helloForm"
name="helloForm"
path="/HelloWorld"
scope="session"
validate ="true"
type="hello.HelloAction">
<forward
name="SayHello"
path="/hello.jsp"
/>
</action>
<plug-in className= "org.apache.struts.validator.ValidatorPlugIn">
<set-property property ="pathnames" value = "/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
</plug-in>
HelloAction.java
public ActionForward execute(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
// These "messages" come from the ApplicationResources.properties file
MessageResources messages = getResources(request);
/*
* Validate the request parameters specified by the user
* Note: Basic field validation done in HelloForm.java
* Business logic validation done in HelloAction.java
*/
ActionMessages errors = new ActionMessages();
// String userName = (String)((HelloForm) form).getUserName();
String userName =( String) (( DynaValidatorForm) form).get( "userName");
String badUserName = "Monster";
if (userName.equalsIgnoreCase(badUserName)) {
errors.add("username", new ActionMessage("hello.dont.talk.to.monster", badUserName ));
// saveErrors(request, errors);
return (new ActionForward(mapping.getInput()));
}
/*
* Having received and validated the data submitted
* from the View, we now update the model
*/
PersonBean pb = new PersonBean();
pb.setUserName(userName);
pb.saveToPersistentStore();
/*
* If there was a choice of View components that depended on the model
* (or some other) status, we'd make the decision here as to which
* to display. In this case, there is only one View component.
*
* We pass data to the View components by setting them as attributes
* in the page, request, session or servlet context. In this case, the
* most appropriate scoping is the "request" context since the data
* will not be neaded after the View is generated.
*
* Constants.PERSON_KEY provides a key accessible by both the
* Controller component (i.e. this class) and the View component
* (i.e. the jsp file we forward to).
*/
request.setAttribute( Constants.PERSON_KEY, pb);
// Remove the Form Bean - don't need to carry values forward
request.removeAttribute(mapping.getAttribute());
// Forward control to the specified success URI
return (mapping.findForward("SayHello"));
为什么会出现
org.apache.struts.validator.FieldChecks.validateRequired(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest)
org.apache.commons.validator.ValidatorException: org.apache.struts.validator.FieldChecks.validateRequired(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionErrors, javax.servlet.http.HttpServletRequest)
at org.apache.commons.validator.ValidatorAction.loadValidationMethod(ValidatorAction.java:587)
at org.apache.commons.validator.ValidatorAction.executeValidationMethod(ValidatorAction.java:517)
at org.apache.commons.validator.Field.validateForRule(Field.java:637)
at org.apache.commons.validator.Field.validate(Field.java:716)
at org.apache.commons.validator.Form.validate(Form.java:198)
at org.apache.commons.validator.Validator.validate(Validator.java:284)
at org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.java:112)
at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:921)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:206)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1158)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:825)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:736)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:526)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:595)
问题点数:50、回复次数:4Top
1 楼junhong202(junhong)回复于 2005-06-28 22:17:06 得分 0
我有这个问题,不知道怎么回事,我觉得我没有配置错阿Top
2 楼nimifeng(学海无涯.......苦作舟....理解是美!!!Mars.Neil)回复于 2005-06-28 22:49:12 得分 0
不熟.帮顶.Top
3 楼junhong202(junhong)回复于 2005-06-29 08:52:59 得分 50
我知道了,我刚刚解决了这个问题,你用的struts库的版本问题,我刚开始用的myeclipse得库就出现这个问题,你现在把它换成struts1.2.7就可以了。Top
4 楼h_yufa()回复于 2005-07-15 15:48:52 得分 0
还有很多多多问题!!!!!!!Top




