本帖最后由 kusch 于 2009-11-11 14:39:49 编辑

解决方案 »

  1.   

    在<action>里加一个属性为<action validate="true">
    其余写的都没什么问题吧,在plug-in里有两个,一个是validator-rules.xml
    另一个是validation.xml
    validation.xml是需要我们自己配置的
    当我们配置好validation.xml后,ActionServlet会自动调用validator-rules.xml里进行相应的匹配,
    <validator name="required" msg="errors.required"/>
    并显示出错信息,出错信息放在errors.required,
    你在MessageResources.properties里可以看到errors.required = {0} is required;
    现在流程应该懂了吧。
    当然你也可以动态的配置错误信息
    在MessageRecources.properties里写 username.invalid= username
    然后在<field><arg key="username.invalid"> </field>
    这样就能配置好了。
      

  2.   

    http://www.ntsky.com/docs/java/Struts/Struts/StrutsGossip.htm看看这个里面的
    辅助框架 
    在Struts中整合了Validator验证框架,以及Tiles模版引擎,这边一并简介它们的使用方式。Validator 框架 
      

  3.   

    在 <action>里加一个属性为 <action validate="true"> 加了也不对。
    报错 信息为:The requested resource  is not available.
      

  4.   

    The requested resource  is not available.
    它没找到对应的validation.xml 文件嘛。
      

  5.   

    我也遇到动态验证的问题。总是解析不了  两个XML文件搞了一天 也没解决。。
    有人说是  doctype 里的 DTD 和 用的包 版本不匹配。
    借地方问一下:
    但是从哪里看 它们匹配不匹配?  要改哪里?   怎么找到匹配的包?
      

  6.   

    我这个也差不多是说文件解析有问题
    运行时候在控制台(console)输出信息如下:2009/11/12 13:13:56 org.apache.struts.action.ActionServlet initChain
    情報: Loading chain catalog from jar:file:/D:/program/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/testConfig/WEB-INF/lib/struts-core-1.3.10.jar!/org/apache/struts/chain/chain-config.xml
    2009/11/12 13:13:56 org.apache.commons.digester.Digester error
    致命的: Parse Error at line 3 column 15: Document is invalid: no grammar found.
    org.xml.sax.SAXParseException: Document is invalid: no grammar found.
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.commons.digester.Digester.parse(Digester.java:1827)
    at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:740)
    at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:689)
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:356)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1139)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:791)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:127)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Unknown Source)
    2009/11/12 13:13:56 org.apache.commons.digester.Digester error
    致命的: Parse Error at line 3 column 15: Document root element "struts-config", must match DOCTYPE root "null".
    org.xml.sax.SAXParseException: Document root element "struts-config", must match DOCTYPE root "null".
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
    at org.apache.commons.digester.Digester.parse(Digester.java:1827)
    at org.apache.struts.action.ActionServlet.parseModuleConfigFile(ActionServlet.java:740)
    at org.apache.struts.action.ActionServlet.initModuleConfig(ActionServlet.java:689)
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:356)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1139)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:791)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:127)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Unknown Source)
    2009/11/12 13:13:56 org.apache.struts.util.PropertyMessageResources loadLocale
    警告:   Resource org/apache/struts/action/ActionResources_ja_JP.properties Not Found.
    2009/11/12 13:13:56 org.apache.catalina.core.ApplicationContext log
    致命的: action: null
    java.lang.NullPointerException
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1274)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1205)
    at org.apache.struts.util.RequestUtils.applicationClass(RequestUtils.java:124)
    at org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:172)
    at org.apache.struts.util.RequestUtils.applicationInstance(RequestUtils.java:147)
    at org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:842)
    at org.apache.struts.action.ActionServlet.init(ActionServlet.java:359)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1139)
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:791)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:127)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Unknown Source)
    2009/11/12 13:13:56 org.apache.catalina.core.ApplicationContext log
      

  7.   

    有这个文件ActionResources_ja_JP.properties吗,
    如果是这个国际化文件的话就需要在struts_config.xml里配置
    <message-resources parameter="ActionResources" />