首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

Struts2交付数组

2012-09-10 
Struts2提交数组webwork表单提交中有一个很有用的技巧,在提交成组的类似person[0].name,person[1].name的

Struts2提交数组
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>  

热点排行