Struts2 的checkboxlist怎么默认选中

前阵子在使用struts2的checkboxlist,遇到不会默认选中的问题,花了不少时间,终于解决了.现在把它记录下来.

项目里面有两个实体对象 Lace(花边) 和Tag(标签,花边属性),关系是 n v n.即一个花边对象可以有多个花边属性,一个花边属性可以被多个花边所拥有.代码如下:

 

public   class  Lace
{
    
private Integer id;
    
private String name;
    
private List<Tag> tags;
   
    
//...省略其他属性及其getter和setter
}


public   class  Tag
{
    
private Integer id;
    
private String name;
    
private List<Lace> laces;
    
//...省略其他属性及其getter和setter
}

 

当时要做的一个功能是编辑或新建一个Lace对象时可以使用chekbox选中Tag,并将这些属性保存到Lace对象的tags集合里面.

Action的代码如下:

public   class  LaceAction  extends  ActionSupport
{
    
//Tag集合.
    private List<Tag> tags;

    
//当前选中(或当前编辑的Lace对象)的所有Tag的id.
    private Integer[] selectTagIds;

    
//当前编辑的Lace对象
    private Lace lace;
    
//..省略其他代码和getter和setter

    
public String load() throws Exception {
        
if (id != null{
                /
/获取当前编辑的Lace对象
                setLace(laceService.getLaceById(id));
                
//设置当前选中的Tag,
            if (lace.getTags().size() > 0{
                    selectTagIds 
= new Integer[lace.getTags().size()];
                
for (int i = 0; i < this.lace.getTags().size(); i++{
                    selectTagIds[i] 
= lace.getTags().get(i).getId();
                }

            }

        }

        
return SUCCESS;
    }

    
    
public String save() throws Exception {
            List
<Tag> laceTags = lace.getTags();
            
// 设置花边属性
        if (selectTagIds != null{
            
for (Integer tagId : selectTagIds) {
                    Tag t 
= laceService.getTagById(tagId));
                     
if (!laceTags.contains(t))
                        lace.getTags().add(t);
            }

        }

            laceService.saveLace(lace);
            
return SUCCESS;
}

页面的代码:

<s:checkboxlist name="selectTagIds" list="tags" listKey="id" listValue="name" />

这里要说明一下,selectTagIds为Action里面的一个Integer[] ,用来存放当前用户选中的chekbox的key值,这样当编辑的时候,action为selectTagIds设置了当前编辑的lace对象的tag集合的所有id,checkboxlist 会根据selectTagIds的设置的值自动选中里面的项.

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值