在配置的时候,注意:
- 文件放在action的同级目录中
- 文件命名action类名+方法名(struts2配置文件中的访问名)+validation : 这个action都使用的话,中间的不写
在今天工作的时候,遇到了问题:
- 再request()中获取数据(String name = request().getParameter("name");) 这样的值,在表单验证器中是无法正常的使用。
<field name="name">
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入用户名</message>
</field-validator>
</field>
<field-validator type="requiredstring">
<param name="trim">true</param>
<message>必须输入用户名</message>
</field-validator>
</field>
这个数据经过这个表单验证器的时候,会触发这个字段的验证。可是会一直空的,因为他根本就没有值。因为:
struts2,action里的属性名字要跟页面的标签名字一样,这样才能通过set,get方法获取。而这是struts2中的表单验证,所有你只有再 action中 定义属性给上get() set().
2,上面这个问题是一般比较大众的问题。而下面的这个问题久有点“奇葩”,因为很少有人这样写。而我就犯了这样的错,它的体现是:再验证上,和输入真确的情况下都是没有错误的。主要是它在“回显”时就会出现问题。在我时错误的情况下,我回到我的页面。而发现我的值都没有了,就是我那些初始化的值。
我在网上找了很久,都没有我要的答案。而从开始分析: 现在比如我们要到一个修改用户信息页面去,
1,我们要开始查询信息,放入作用域中,到页面时显示出来。
2,我们进入页面后开始初始化(这种很不常用)
那么我们的问题“回显”没有值的问题,大部分就出问题就在 : 1, 我查询了数据放入 A集合中,提交数据的时候使用B集合提交。呵呵,这是不是很难出现的错误。 因为struts2的机制就是到这个页面,并没有将请求的数据消除。而是再次提交的时候进行处理,这个时候我们的提交数据发生了错误。它就是将数据回到原来...你原来的数据就出来了,不过这种错误真的会很少见。