`
swimren
  • 浏览: 21206 次
  • 性别: 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多次,居然没有一个回复,难道对你们都没有帮助吗?楼主的代码帮了我大忙了,非常感谢.

相关推荐

    JAVA程序开发大全---上半部分

    12.1.2 Struts 2.0与Struts 1.x框架的区别 215 12.2 MyEclipse创建基于Struts 2.0框架的项目 215 12.2.1 下载Struts 2.0开发包 216 12.2.2 创建Struts 2.0项目 216 12.2.3 配置Struts 2.0项目 217 12.2.4 创建Struts...

    java面试题

    72.8. struts2.0的常用标签 71 72.9. action是单实例还是多实例,为什么? 73 72.10. Struts的validate框架是如何验证的? 74 72.11. dispatchAction是用什么技术实现的? 74 72.12. struts2.0的mvc模式?与struts...

    个人博客系统源码下载

    提供用户登录功能,随机生成验证码验证 4 后台管理模块 提供日志的查询、删除、修改、新增功能 提供分页功能 1.3. 运行环境 1. 软件环境 分类 名称 版本 语种 操作系统 Windows XP 简体中文 数据库平台 Oracle10g ...

    基于J2EE框架的个人博客系统项目毕业设计论...

    因此,在具体设计实现该博客网站时,主要考虑了主流博客网站的几个主要功能:(1)博客的注册、登录验证功能(2) 网络用户通过关键字搜索博文功能(3) 最热门博客页面推荐浏览(4) 文章详细内容及相关评论显示(5) 博客...

    java开源包1

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Spring in Action(第二版 中文高清版).part1

    6.4.3 在Spring 2.0里声明事务 6.4.4 定义注释驱动事务 6.5 小结 第7章 保护Spring 7.1 Spring Security介绍 7.2 验证用户身份 7.2.1 配置Provider Manager 7.2.2 根据数据库验证身份 7.2.3 根据LDAP仓库...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    因此,在具体设计实现该博客网站时,主要考虑了主流博客网站的几个主要功能:(1)博客的注册、登录验证功能(2) 网络用户通过关键字搜索博文功能(3) 最热门博客页面推荐浏览(4) 文章详细内容及相关评论显示(5) 博客...

    java开源包11

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包2

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包3

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包6

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包5

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包10

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包4

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包8

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包7

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包9

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    java开源包101

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Java资源包01

    ftp4j是一个FTP客户端Java类库,实现了FTP客户端应具有的大部分功能文件(包括上传和下 载),浏览远程FTP服务器上的目录和文件,创建、删除、重命,移动远程目录和文件。ftp4j提供多种方式连接到远程FTP服务器包括...

    Spring in Action(第二版 中文高清版).part2

    6.4.3 在Spring 2.0里声明事务 6.4.4 定义注释驱动事务 6.5 小结 第7章 保护Spring 7.1 Spring Security介绍 7.2 验证用户身份 7.2.1 配置Provider Manager 7.2.2 根据数据库验证身份 7.2.3 根据LDAP仓库...

Global site tag (gtag.js) - Google Analytics