DynaActionForm在 struts-config。xml文件中代码如下:
<form-beans>
<form-bean name="loginActionForm" type ="com.struts.chaptertwo.LoginActionForm" />
<form-bean name="suggestionActionForm" type ="com.struts.chapterThree.SuggestionActionForm" />
<form-bean name ="customerRegistForm" type = "org.apache.struts.validator.DynaValidatorForm" >
<form-property name="login" type="java.lang.String"/>
<form-property name="password" type="java.lang.String"/>
<form-property name="isNameCheckBox" type="java.lang.String"/>
</form-bean>
</form-beans>loginAction中代码如下:
public ActionForward execute(ActionMapping mapping,ActionForm form,
HttpServletRequest request,HttpServletResponse response){

// CustomerRegistForm cform = (CustomerRegistForm)form;
// String login = cform.getLogin();
// String password = cform.getPassword();
// Boolean isNameCheckBox = Boolean.valueOf(cform.getString("isNameCheckBox"));

DynaActionForm dform = (DynaActionForm)form;
String login = dform.getString("login");
String password = dform.getString("password");
Boolean isNameCheckBox = Boolean.valueOf(dform.getString("isNameCheckBox"));

System.out.println(isNameCheckBox);

if(login.equals("test")&&password.equals("test")){
return mapping.findForward("success");
}else{
return mapping.getInputForward();
}
}报错如下:
严重: Servletaction的Servlet.service()发生意外(exception)
java.lang.IllegalArgumentException: Resources cannot be null.
at org.apache.commons.validator.Validator.<init>(Validator.java:188)
at org.apache.struts.validator.Resources.initValidator(Resources.java:475)
at org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.java:104)
at org.apache.struts.action.RequestProcessor.processValidate(RequestProcessor.java:950)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:207)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
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:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
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:869)
at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
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(Unknown Source)请问是什么原因?

解决方案 »

  1.   

    你先可以打印下mapping.getInputForward(); 这个应该得到的是空的。
    如果是空的说明你的xml中的action配置是有问题的。
      

  2.   

    看看配置文件中是否配置了对应forward或者是input
      

  3.   

    在网络上广为搜索,发现解决办法:是因为配置了struts的form,但是你没有给她配置validate方法,加上validate就可以通过了还有一种解决方法就是在struts-config.xml里把validate="false"。 这个是我在学ajax时遇到的问题,还以为是ajax出了问题呢,呵呵。------
    结论:
    将action配置改为 validate=“false” 即可