`

struts2.3.x 用validation框架做客户端验证

 
阅读更多

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

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE validators PUBLIC 
    "-//Apache Struts//XWork Validator 1.0.2//EN" 
    "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
<validators>

</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"],如

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

 

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

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

</struts>

 

 

0
1
分享到:
评论
2 楼 ahuzl007 2013-02-22  
allloveend 写道
有没有效果图来一个

效果很一般,就是在textbox正上方显示一个error message
1 楼 allloveend 2013-02-22  
有没有效果图来一个

相关推荐

    Struts2.3.16.3试用

    在Struts2.3.16.3中,预定义了一些拦截器,如`params`用于处理请求参数,`validation`用于进行字段验证,`exception`用于异常处理。开发者也可以自定义拦截器以满足特定需求。 接下来,Struts2提供了强大的视图技术...

    struts-2.3.16.1-all

    7. **Validation框架**:Struts 2内建了强大的验证框架,可以通过XML或注解方式定义验证规则,实现数据的前端和后端双重校验。 8. **插件系统**:Struts 2拥有丰富的插件库,如JSON插件、REST插件、Freemarker插件...

    struts-2.3.15.1-all.zip

    用户可以自定义拦截器,也可以使用内置的拦截器,如Validation拦截器用于表单验证。 3. **插件支持**:Struts 2拥有丰富的插件库,可以扩展框架功能,例如JSON支持、Tiles布局、Spring集成等。这使得Struts 2能更好...

    struts-2.3.28.1 jar包

    Struts 2.3.28.1 是一个流行的Java Web框架Apache Struts的特定版本。这个框架主要用于构建和维护可扩展且易于管理的企业级Web应用程序。Struts 2是MVC(Model-View-Controller)设计模式的一个实现,它为开发者提供...

    struts2.3.1.2

    8. Validation框架:Struts2内置了强大的表单验证功能,允许开发者在Action类或XML配置文件中定义验证规则。 9. Internationalization(国际化):Struts2支持多语言环境,可以通过资源包文件轻松实现内容的国际化...

    Struts2.3.1.1chm格式帮助文档

    8. **Validation**:Struts2提供内置的验证框架,可以基于XML或注解定义表单字段的验证规则。 9. **Internationalization (i18n)**:支持多语言,通过资源包(Resource Bundle)实现界面文本的本地化。 10. **...

    struts 2.3.4.1 最新英文版API

    概览 程序包 类 使用 树 已过时 索引 帮助 上一个 下一个 框架 无框架 所有类 ----------------------------------------------------------- Struts 2.3.4.1 API 程序包 程序包 说明 --------------------------...

    Struts2.3.1.1.zip

    Struts2.3.1.1是Struts2框架的一个特定版本,此版本包含了对先前版本的改进和修复,以提升性能、安全性和稳定性。 Struts2框架的主要特点包括: 1. **灵活的控制器**:Struts2的核心是Action类,每个Action对应一...

    Struts2.3.4.1 注解实例(二十)

    Struts2.3.4.1 是一个基于MVC设计模式的Java Web框架,它极大地简化了构建动态、数据驱动的Web应用的过程。这个版本在Struts2的早期版本上进行了改进,添加了新的功能和修复了一些已知问题。在这个注解实例中,我们...

    struts-2.3.4.1最全架包

    这个"struts-2.3.4.1最全架包"包含了Struts2框架的完整版本,适用于开发者进行项目开发或者学习使用。 在Struts2框架中,有以下几个核心概念和功能: 1. **Action类**:这是业务逻辑的执行入口,通常继承自`org....

    struts-2.3.16.3-lib.zip

    这个“struts-2.3.16.3-lib.zip”压缩包包含了Struts 2框架版本2.3.16.3的核心库和其他依赖的JAR文件。此版本的发布在2014年,它提供了对Java EE平台的强有力支持,帮助开发者构建可扩展、模块化且易于维护的Web应用...

    struts-2.3.16.1版本核心jar包

    9. **Validation框架**:Struts2内置了验证框架,可以对用户输入进行验证,确保数据的完整性和一致性。 在压缩包文件`struts-2.3.16.1`中,除了核心JAR文件外,可能还包含了其他依赖库,例如Spring和Hibernate的...

    struts-2.3.15.3_lib.zip

    这个“struts-2.3.15.3_lib.zip”文件包含了Struts2框架的库文件、实例、文档以及源码,是开发者学习和使用Struts2的重要资源。 Struts2的核心在于它提供了一种模型-视图-控制器(MVC)架构,使得开发者可以更有效...

    struts2 -2.3.15.3-验证框架简单实现mode

    在Struts2的2.3.15.3版本中,集成的验证框架是其核心功能之一,帮助开发者确保用户输入的数据质量和安全性。本篇将详细讲解如何在Struts2中实现一个简单的验证框架模式。 首先,我们需要了解Struts2验证框架的基本...

    Struts2.3.4.1+Hibernate4.1.7+Spring3.1.2

    Struts2.3.4.1、Hibernate4.1.7和Spring3.1.2是经典的Java企业级开发框架组合,通常被称为SSH(Struts2、Spring、Hibernate)。这个组合在过去的许多年里被广泛用于构建Web应用程序,因为它们各自提供了一套强大的...

    struts-2.3.15.3.jar

    `struts-2.3.15.3.jar`是Struts 2框架的一个特定版本——2.3.15.3的库文件,它包含了运行Struts 2应用程序所需的类和资源。这个`.jar`文件是Java Archive的缩写,是Java平台用于打包和部署代码的标准格式。 在...

    struts-2.3.1.2-docs.zip

    Struts2的版本2.3.1.2是该框架的一个重要里程碑,它包含了核心库、插件和XWork核心组件。 【struts2-core】是Struts2的核心模块,它提供了框架的基础架构和关键功能。主要包括以下几个方面: 1. **Action和Result*...

    struts-2.3.1.2 all.jar

    此压缩包"struts-2.3.1.2 all.jar"包含了Struts 2框架的版本2.3.1.2的所有相关组件和插件,这使得开发者可以方便地集成和使用Struts 2的功能。 首先,Struts 2的核心组件包括Action类、配置文件、拦截器...

    spring3.0.3+ibatis2.3.4.7分页

    Spring 3.0.3是该框架的一个稳定版本,提供了许多改进和新特性,例如对JSR-303/JSR-349 Bean Validation的支持、支持RESTful服务以及增强的测试框架。 iBATIS,现在被称为MyBatis,是一个持久层框架,允许开发者将...

    ExtJS4.1+Struts2.3.1.2表格(grid)例子程序

    最新Ext版本、最新Struts2版本 环境:myeclipse 9.0 extjs-4.1.0有红叉,请为ext-all.js添加Exclude From Validation struts2的类库已在WEB-INF/lib下 解压缩后的文件夹导入myeclipse即可 myeclipse9.0下自带的...

Global site tag (gtag.js) - Google Analytics