webwork数组形式提交表单及validation研究

webwork表单提交中有一个很有用的技巧,在提交成组的类似person[0].name,person[1].name的表单中,可以利用conversion使xwork自动装配对象属性到action中:
form 代码:

<form action="savePerson.action">
<input type="text" name="persons[0].name" />
<input type="text" name="persons[0].id" />
<input type="text" name="persons[1].name" />
<input type="text" name="persons[1].id" />
</form>

person类:

public Class Person{
public String name;
public Long id;
getXXX...
setXXX...
}

然后在action类同层次创建conversion文件,ClassName-conversion.properties,这里用SavePersonAction-conversion.properties:

Element_persons=Person
CreateIfNull_persons=true

这里面配置文件的含义就是页面中persons名字样式的数组表单提交会被xwork转换成一个个对象放入list中,如果list是空的话xwork会自己创建一个.
action的代码如下:

public Class SavePersonAction extends ActionSupport{
List persons=new ArrayList();
}


这样,form中提交的数组形式的属性,会由xwork转换成person对象并放入list中,供action使用.

但这样的验证表单的数据就会与传统xwork的验证不同.传统xml的validation类似如下样子:

<validators>
<field name="name">
<field-validator type="required">
<message>You must enter a value for bar.</message>
</field-validator>
</field>
<validators>

这里的field name必须精确匹配表单中提交的名字,由于我们表单中的name是name[*]形式的,并不能确定提交哪个person[?].name , 就要用到xwork的一个测试的validation,叫collection,配置方法如下,在SavePersonAction-validation.xml中加入:


<validators>
<field name="persons">
<field-validator type="collection">
<param name="property">persons.name</param>
<param name="validatorRef">required</param>
<param name="validatorParams['defaultMessage']">Must be String</param>
<message> ... </message>
</field-validator>
</field>
</validators>
<validators>


我想实验用collection去使用regex验证,没有成功,可能还有问题,最后还是将表单提交到action层进行正则验证.

conversion会有一个问题,如果person中有一个id声明为long类型,但页面提交的时候这个属性如果包括了字母和数字,就会产生一个conversion error,由于xwork的xml验证是在conversion转换成对象之后进行,无法在之前拦截到, 如果页面操作比较复杂,需要button提交数据到action进行各种操作,会在提交前产生conversion error,不能进入action层进行操作,在开发中需要注意.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值