首先,XXXXAction-validation.xml里的XML头文件要用新的,否则会报错

 

Xml代码


1.   
2. <!DOCTYPE validators PUBLIC    
3.     "-//Apache Struts//XWork Validator 1.0.2//EN"    
4. >
5. <validators>  
6.   
7. </validators


 

 


错误如下

致命的: Caught exception while loading file test/validate/NewValidateAction-validation.xml 
 
 www.opensymphony.com - Class: java.net.PlainSocketImpl 
 
 File: PlainSocketImpl.java 
 
 Method: connect 
 
 Line: 195 - java/net/PlainSocketImpl.java:195:-1 
 
 at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:115) 
 
 at com.opensymphony.xwork2.validator.DefaultValidatorFileParser.parseActionValidatorConfigs(DefaultValidatorFileParser.java:81) 
 
 at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.loadFile(AnnotationActionValidatorManager.java:394) 
 
 at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.buildClassValidatorConfigs(AnnotationActionValidatorManager.java:279) 
 
 at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.buildValidatorConfigs(AnnotationActionValidatorManager.java:371) 
 
 at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.getValidators(AnnotationActionValidatorManager.java:102) 
 
 at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.validate(AnnotationActionValidatorManager.java:141) 
 
 at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.validate(AnnotationActionValidatorManager.java:133) 
 
 at com.opensymphony.xwork2.validator.AnnotationActionValidatorManager.validate(AnnotationActionValidatorManager.java:128) 
 
 at com.opensymphony.xwork2.validator.ValidationInterceptor.doBeforeInvocation(ValidationInterceptor.java:222) 
 
 at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263) 
 
 at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68) 
 
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:238) 
 
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:238) 
 
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:191) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:73) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:91) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:252) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:141) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:145) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:171) 
 
 at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:193) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) 
 
 at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242) 
 
 at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) 
 
 at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:544) 
 
 at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) 
 
 at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91) 
 
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
 
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
 
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) 
 
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) 
 
 at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 
 
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) 
 
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) 
 
 at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927) 
 
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
 
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 
 
 at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987) 
 
 at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579) 
 
 at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307) 
 
 at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
 
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
 
 at java.lang.Thread.run(Thread.java:662) 
 
 Caused by: java.net.UnknownHostException: www.opensymphony.com 
 
 at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:195) 
 
 at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 
 
 at java.net.Socket.connect(Socket.java:529) 
 
 at java.net.Socket.connect(Socket.java:478) 
 
 at sun.net.NetworkClient.doConnect(NetworkClient.java:163) 
 
 at sun.net.www.http.HttpClient.openServer(HttpClient.java:395) 
 
 at sun.net.www.http.HttpClient.openServer(HttpClient.java:530) 
 
 at sun.net.www.http.HttpClient.<init>(HttpClient.java:234) 
 
 at sun.net.www.http.HttpClient.New(HttpClient.java:307) 
 
 at sun.net.www.http.HttpClient.New(HttpClient.java:324) 
 
 at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970) 
 
 at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911) 
 
 at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836) 
 
 at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172) 
 
 at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:677) 
 
 at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startEntity(XMLEntityManager.java:1315) 
 
 at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.startDTDEntity(XMLEntityManager.java:1282) 
 
 at com.sun.org.apache.xerces.internal.impl.XMLDTDScannerImpl.setInputSource(XMLDTDScannerImpl.java:283) 
 
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.dispatch(XMLDocumentScannerImpl.java:1194) 
 
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$DTDDriver.next(XMLDocumentScannerImpl.java:1090) 
 
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:1003) 
 
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648) 
 
 at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140) 
 
 at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:511) 
 
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:808) 
 
 at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737) 
 
 at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:119) 
 
 at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205) 
 
 at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522) 
 
 at javax.xml.parsers.SAXParser.parse(SAXParser.java:395) 
 
 at com.opensymphony.xwork2.util.DomHelper.parse(DomHelper.java:113) 
 
 ... 66 more



 

要使用客户端验证的话,要在<:action>中设置[theme="xhtml" validate="true"],如


Html代码



<s:form action="new_validate" namespace="/test" theme="xhtml" validate="true">

 

struts.xml的dtd文件也最好换成新的:


Xml代码




1. <!DOCTYPE struts PUBLIC   
2.     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"   
3. >
4.   
5. <struts>  
6.   
7. </struts>