`
swimren
  • 浏览: 21339 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
社区版块
存档分类
最新评论

Struts2.0下的客户端验证(1)

阅读更多

         Struts2.0 默认提供了 simple,xhtml,css_xhtml,ajax  几个模板主题, 但对于 simple 不支持客户端的js验证.

 参考  http://jamsa.iteye.com/blog/40463  上的关于 webwork的客户端验证,对 simple 和xhtml 下的几个文件进行了修改,

在自己的项目下创建了个template/simple 目录,将修改后的几个文件 form.ftl, form-close.ftl,form-close-validate.ftl ,form-validate.ftl 放到该目录下,并将 xhtml下的 theme.properties 和 validation.js 文件 也copy到该目录下, 

修改  theme.properties  里面的内容为 parent = simple . 这样将来就可以 继续扩展simple模板主题 ,写自己的 ftl 文件.

并同时使得simple的主题具有了客户端验证的功能.

         另外,有些人也可能遇到过 即使使用xhtml 主题 设置了 form中的 validate="true"  也不能进行客户端验证.

这里就要注意几个问题:

通过浏览 form-close-validate.ftl 这个文件

我们发现 <#if ((parameters.validate?default(false) == true) && (parameters.performValidation?default(false) == true))>

这句代码, 里面还有一个条件就是 parameters.performValidation?default(false) == true ,只有它也成立的时候,验证才有效.

通过跟踪代码 org.apache.struts2.components.Form.java 类 中有个 

private void evaluateClientSideJsEnablement(String actionName, String namespace, String actionMethod) 方法,

里面有一句 ActionConfig actionConfig = runtimeConfiguration.getActionConfig(namespace, actionName);

如果 actionConfig  返回null 那么它的下面的 执行拦截的处理 就不会执行,performValidation 还是为false.

所以我们关键是要正确的 设置 namespace, actionName 这两个参数, 反映到 struts form <s:form><s:form>标签 <s:form>中就是要正确的设置 namespace 和</s:form></s:form></s:form>action两个参数, 其中action 不能 设置成 yourActionName.action  这中格式, 只能采用 yourActionName 或着yourActionName!methodName 或者 yourActionName!methodName.action 这种格式.

<s:form><s:form>

       附件里是 修改的 的几个模板文件

 

 

 

</s:form></s:form>
分享到:
评论
12 楼 OldWen 2007-11-20  
不错,继续努力!
11 楼 kevin002 2007-08-23  
不错,支持楼主一下.
10 楼 agu 2007-08-17  
因为当前版本的Struts 2.0.9 不支持date类型的客户端验证
如果我想扩展其验证 应该从那一个地方下手?

尝试过修改 模板文件 form-close-validate.ftl  添加

<#elseif validator.validatorType = "date">
            if (field.value != null) {
  var value = Date.parse(field.value.replace('-','/') );  
      var datevalue= new Date(value );  
                if(isNaN(datevalue))
         {
                    addError(field, error);
                    errors = true;
                }
                if (<#if validator.min?exists>value <= Date.parse(${validator.min}.replace('-','/')) <#else>false</#if> ||
                    <#if validator.max?exists>value >= Date.parse(${validator.max}.replace('-','/')) <#else>false</#if> ){
                    addError(field, error);
                    errors = true;
                }
            }
            </#if>

执行时提示 validator.min 没定义。

不知何处修改,才能扩展自定义的验证类型。

当前支持的客户端验证类型有:
required validator
requiredstring validator
stringlength validator
regex validator
email validator
url validator
int validator
double validator
9 楼 lennonwang 2007-08-11  
我的struts2的工程客户端校验还是有问题,服务器端校验没有问题,说明validator配置应该没有问题。
求助!
我把你提供的附件下载解压缩放在web的template/simple
我的form的配置
<s:form action="${card.id=='0'?'add':'update'}Card!doUpdate" theme="simple" validate="true" namespace="/card">
struts action配置
<package name="card" extends="struts-default"  namespace="/card">
<action name="updateCard" class="com.content.web.card.CardAction" method="doUpdate">
<result name="input">/admin/editCard.jsp</result>
<result name="list" type="redirect">/card/listCard.action</result>
</action>

帮忙给看一下。
调试了好久了,是在搞不定了.....
lennon.wang@163.com
8 楼 cxboyee 2007-07-23  
好人啊楼主!
7 楼 tony.lee 2007-07-09  
如果我想用struts2的标签+XWork Validator+客户端的js验证+,但是我不想用它的样式,那么我应该如何设置呢?
6 楼 eastlift 2007-06-29  
没听明白什么意思
5 楼 javaIE 2007-06-29  
我也恢复下!感谢楼主!
4 楼 andyyang007 2007-06-28  
呵。我觉得如果要回复的话, 就要回复一些有实用价值的。
如果说一些客气话。好像没有大多的必要^^
3 楼 qinjian990 2007-06-28  
thankyou
2 楼 scienceren 2007-06-26  
如果不想修改的话,用theme="css_xhtml"也行,呵呵。
1 楼 meetyou930 2007-06-26  
看了一下该文件被下载了40多次,居然没有一个回复,难道对你们都没有帮助吗?楼主的代码帮了我大忙了,非常感谢.

相关推荐

    struts 2.0 详细配置

    ### Struts 2.0 详细配置解析 #### 一、Struts 2.0 简介 Struts 2.0 是一个基于 Java 的开源框架,用于开发 Web 应用程序。它继承了 Struts 1.x 的优点,并在架构上进行了改进,更加灵活且易于扩展。Struts 2.0 ...

    Struts_2.0从入门到精通

    Struts2.0引入了一系列新的表单标签,如、、等,它们提供了更丰富和灵活的表单元素,支持客户端验证和服务器端验证的无缝集成。 十三、Struts2.0与AJAX的融合 AJAX技术的兴起,为Web应用带来了全新的交互体验。...

    struts2.0的基本jar包

    Struts2.0是一个强大的Java Web应用程序框架,它基于Model-View-Controller(MVC)设计模式,旨在简化企业级应用的开发流程。这个压缩包包含的是Struts2.0的核心库和其他必要的JAR文件,这些文件对于创建一个基于...

    struts2.0所有jar包

    Struts2.0是Java Web开发中非常流行的一个MVC框架,它基于Model-View-Controller(模型-视图-控制器)设计模式,为开发者提供了强大的功能和灵活的架构。这个压缩包包含了Struts2.0框架运行所需的所有jar包,使得...

    Struts2.0 入门学习资料

    2. 拦截器:拦截器是Struts2.0的一大亮点,可以实现如日志记录、权限验证、事务管理等通用功能,提高了代码复用性。 3. 结果类型:Struts2.0支持多种结果类型,如Redirect、RedirectAction、Stream等,可以灵活地...

    Struts2.0培训课件

    总的来说,"Struts2.0培训课件"将涵盖Struts2.0框架的基础知识,包括其架构、配置、核心组件、数据绑定、验证、视图展现和性能优化等方面。通过深入学习,开发者能够熟练掌握这一框架,从而更高效地构建Java Web应用...

    struts2.0基础和入门

    9. **表单验证**:Struts2.0提供了强大的表单验证功能,可以通过注解或XML配置实现客户端和服务器端的验证。 10. **国际化与本地化**:Struts2.0支持多语言环境,通过资源包(Properties文件)实现应用的国际化和...

    学习Struts 2.0系列

    7. **表单和验证**:学习如何创建Struts 2.0表单Bean,进行客户端和服务器端的数据验证。 8. **国际化与本地化**:实现应用的多语言支持,加载不同语言的资源文件。 9. **Struts 2.0标签库**:熟悉各种内置的JSP...

    struts2.0中文帮助手册

    Interceptor是Struts2.0的一大创新,它允许开发者在Action调用前后插入拦截逻辑,如日志记录、权限验证等,增强了代码的可重用性。 Struts2.0中文帮助手册涵盖了以下几个主要知识点: 1. **配置与启动**:手册会...

    Struts2.0框架技术详解

    ### Struts2.0框架技术详解 #### 一、MVC思想 **1.1 Model I 模式和 Model II 模式** ##### 1.1.1 Model I 模式 在Model I模式下,整个Web应用几乎全部由JSP页面组成。JSP页面不仅接收处理客户端请求,还直接...

    struts 2.0 + hibernate +验证

    Struts 2.0、Hibernate 和 验证是构建企业级Java Web应用程序的常用技术栈。这个简单的例子可能是一个综合性的教程,展示了如何整合这三个框架来实现数据持久化、业务逻辑控制以及用户输入验证。 首先,让我们详细...

    struts2.0与dwr开发实例

    在Struts2.0中集成DWR,可以极大地提升用户界面的交互性和响应速度,特别是在表单验证这样的实时反馈场景中。 **Struts2.0框架介绍** Struts2.0是Struts1.x的升级版,它吸收了WebWork框架的优势,提供了更强大的...

    struts 2.0帮助文档

    本教程的"www.qupan.com_2211281_struts2.0中文教程.chm"文件可能包含详细章节,如Action配置、OGNL使用、拦截器编写、结果类型定制、异常处理、标签库使用、整合Spring等,通过实例帮助读者掌握Struts 2.0的各个...

    struts2.0中文帮助

    Struts2.0是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用程序的工具。这个"struts2.0中文帮助"文档集合,无疑是对于正在学习或...

    struts2.0详细教程

    Struts2.0在Struts1的基础上进行了大量的改进和优化,它提供了更灵活的配置方式,更丰富的拦截器(Interceptor)机制,以及对Ajax和富客户端的支持。作为一款J2EE(Java 2 Enterprise Edition)平台上的开源框架,...

    Struts2.0技术资料

    1. **MVC设计模式**:Struts2.0遵循MVC架构,将业务逻辑(Model)、用户界面(View)和控制器(Controller)分离,使得开发人员可以独立地修改各个部分,提高了代码的可维护性。 2. **Action类**:在Struts2中,...

    struts2.0+freemarker实例.rar

    Struts2.0是Apache软件基金会下的一个开源项目,它是Struts1的升级版,旨在提供更灵活、更强大的控制层结构。Struts2的核心组件包括Action、Result、Interceptor等。 1. **Action**:Action是业务逻辑处理的实体,...

    struts2.0标签详解

    1. 表单验证:`s:form`标签可以配合Struts2的验证框架,自动处理客户端和服务器端的验证。 2. 数据绑定:`s:property`标签可以直接显示Action中的属性值,无需手动获取和设置。 3. 动态渲染:`s:iterator`标签可以...

    Struts2.0 教程 ChM

    1. **强大的动作(Action)框架**:Struts2的动作类是业务逻辑的主要载体,它接收来自客户端的请求,处理业务逻辑,并决定下一步的流向。 2. **拦截器(Interceptor)机制**:这是Struts2的一个显著特点,它允许...

    struts2.0

    通过Validator插件,Struts2.0支持强大的表单验证功能,可以在客户端和服务器端进行数据验证,确保输入的数据有效。 **10. JSON支持** Struts2.0支持JSON(JavaScript Object Notation)数据交换格式,使得与AJAX...

Global site tag (gtag.js) - Google Analytics