使用Struts2验证框架实现输入校验

来源:互联网 发布:java思维导图下载 编辑:程序博客网 时间:2024/05/17 10:06

学习了《Struts2权威指南》中关于Struts2的输入校验,自己动手测试了一把,也遇到一些问题,在这里记录一下。直接看代码:

login.jsp

LoginAction.java

校验文件LoginAction-validation.xml,其生成路径要和LoginAction.class在一起.

struts.xml

国际化资源文件messageResource_zh_CN.properties

文件结构:

登录页面:

不输入任何内容,点击"提交",效果如下:

可见对LoginAction中的password属性定义的两个校验器都起作用了,但如果这两个校验信息同时显示有点冗余,此时可以通过设置short-circuit="true"来配置校验器短路.修改后的LoginAction-validation.xml中password字段的定义如下:

这样如果密码为空就提交的话只会提示"密码不能为空",效果如下:

 

PS:直接访问jsp页面(http://localhost:8080/struts/login.jsp)会报错:

 

但是通过action(http://localhost:8080/struts/login.action)就可以正常访问,去掉struts的客户端验证(在jsp页面的form表单中去掉validate="true"属性)也可以正常访问.在网上查了一下资料,大家的解决方法都是走action.个人觉得原因是:通过Action访问Struts2会加载LoginAction-validation.xml,从而读取配置的校验器信息,根据配置的校验器信息生成客户端校验脚本(Javascript),如果直接访问jsp页面那么就获取不到校验器信息(Method public java.util.List org.apache.struts2.components.Form.getValidators(java.lang.String) threw an exception when invoked on org.apache.struts2.components.Form@18db6e1 - Class: freemarker.ext.beans.SimpleMethodModel),从而无法生成客户端脚本.

原创粉丝点击