博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Struts2提交页面表单数组
阅读量:6122 次
发布时间:2019-06-21

本文共 2158 字,大约阅读时间需要 7 分钟。

  hot3.png

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

form 代码:
Html代码
<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>  
<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类:
Java代码
public Class Person{   
public String name;   
public Long id;   
getXXX...   
setXXX...   
}  
public Class Person{
public String name;
public Long id;
getXXX...
setXXX...
}
然后在action类同层次创建conversion文件,ClassName-conversion.properties,这里用SavePersonAction-conversion.properties:
Java代码
Element_persons=Person   
CreateIfNull_persons=true  
Element_persons=Person
CreateIfNull_persons=true
这里面配置文件的含义就是页面中persons名字样式的数组表单提交会被xwork转换成一个个对象放入list中,如果list是空的话xwork会自己创建一个.
action的代码如下:
Java代码
public Class SavePersonAction extends ActionSupport{   
   List persons=new ArrayList();   
}  
public Class SavePersonAction extends ActionSupport{
  List persons=new ArrayList();
}
这样,form中提交的数组形式的属性,会由xwork转换成person对象并放入list中,供action使用.
但这样的验证表单的数据就会与传统xwork的验证不同.传统xml的validation类似如下样子:
Xml代码
<validators>  
  <field name="name">  
      <field-validator type="required">  
          <message>You must enter a value for bar.</message>  
      </field-validator>  
  </field>  
<validators>  
<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中加入:
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>  

转载于:https://my.oschina.net/farces/blog/266885

你可能感兴趣的文章
Oracle 冷备份
查看>>
jq漂亮实用的select,select选中后,显示对应内容
查看>>
C 函数sscanf()的用法
查看>>
python模块之hashlib: md5和sha算法
查看>>
linux系统安装的引导镜像制作流程分享
查看>>
解决ros建***能登录不能访问内网远程桌面的问题
查看>>
pfsense锁住自己
查看>>
vsftpd 相关总结
查看>>
bash complete -C command
查看>>
解决zabbix 3.0中1151端口不能运行问题
查看>>
售前工程师的成长---一个老员工的经验之谈
查看>>
Get到的优秀博客网址
查看>>
dubbo
查看>>
【Git入门之四】操作项目
查看>>
老男孩教育每日一题-第107天-简述你对***的理解,常见的有哪几种?
查看>>
Python学习--time
查看>>
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
高利率时代的结局,任重道远,前途叵测
查看>>
Debian 6.05安装后乱码
查看>>
欢迎大家观看本人录制的51CTO精彩视频课程!
查看>>