日期:2014-05-17  浏览次数:20690 次

struts2表单验证大家都是怎么弄的?
刚刚学了些表单验证,我感觉验证逻辑不应该写在action里面,controller的职责貌似不应该包含这些,但是struts的验证框架把验证逻辑放ActionSupport的validate()方法里,话说这样,咱们在action中是不用验证数据了,但是貌似要判断一下有没有错误信息,然后决定跳转到哪个jsp,这不是换汤不换药么。。。

有没有用拦截器验证的?或者把验证逻辑放在service层?

------解决方案--------------------
其实最简单的验证就是可以通过JS验证,这样数据就不用跑到后台了,不过涉及到和数据库交互的验证还是得通过Action验证了,比如判断用户名是否重复。
------解决方案--------------------
表单验证 可以通过一个struts的验证规则文件来验证

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

<!DOCTYPE validators PUBLIC 
"-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
"xwork-validator-1.0.2.dtd">

 <validators>
  <field name="stu.sname">
  <field-validator type="required">
  <message>请输入学生姓名!</message>
  </field-validator>
  <field-validator type="stringlength">
  <param name="minLength">2</param>
  <param name="maxLength">10</param>
  <message>学生姓名长度必须在2-10位之间</message>
  </field-validator>
  </field>
 </validators>
在页面的表单中添加一个属性
<s:form action="stuadd" validate="true" enctype="multipart/form-data">

所提示的信息 就会在页面显示

不过这样做 外观太难看了 要改的话比较麻烦 
建议使用JS来验证