struts2对对象的强大支持

来源:互联网 发布:网络卫星直播电视 编辑:程序博客网 时间:2024/06/11 16:22

     在工作中发现struts2的强大功能,表为table1,字段有a、b、c、d、e五个字段,其中a、b为table1表的主键。在使用ssh2框架中,hibernate会为复合主键的表生成两个类,为

public class Table1{

 

private Table1Id id;

private String c;

private String d;

private String e;

....省去get、set方法

}

public class Table1Id{

private String a;

private String b;

....省去get、set方法

}

    假设有以下使用场景,按条件查询table1表列表,在列表中有选择性的删除某些记录。这时肯定得往Action方法中传Table1表的主键,但是此表是复合主键,通常情况下我们前台会拼id字符串,在action中解析id字符串,但是复合主键如果特多的法会很麻烦,而且会越来越大,我们现在的项目就是一个七个字段的复合主键。我是这么做的。在jsp代码大体中如下。

 

<s:iterator value="listTable1" id="l" status="i">

<input type="checkbox" name="idList" value='<s:property value="#i.index/>"'/>

<input type="hidden" name='listTable1Id[<s:property value="#i.index/>"].a' value='<s:property value="#l.a/>"'>

<input type="hidden" name='listTable1Id[<s:property value="#i.index/>"].b' value='<s:property value="#l.b/>"'>

<s:property value="#l.c"/>

<s:property value="#l.d"/>

</s:iterator>

 

Action 大概如下

private  List<String> idList = new ArrayList<String>();

private  List<Table1Id> listTable1Id = new ArrayList<Table1Id>();

private  List<Table1>  listTable1= new ArrayList<Table1>();

 

 

public String del(){

 

for(String s : idList ){

 

     Table1Id t = listTable1Id .get(s);

     //调用service层根据主键删除主键的方法。

}

 

return SUCCESS;

}

 

这样就省去了组装串解析串的麻烦。前台循环后,提交的时候会依次把每个元素的Table1Id存到listTable1Id 中,这样我们只需要一个idList ,记录被选中的id,然后根据id从listTable1Id 取id就可以操作了