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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值