逝去的41

无知乃与生俱来,但它很短暂,知识才是永恒的!

原创 Struts2 的checkboxlist怎么默认选中收藏

新一篇: 让tomcat支持中文Url传递  | 旧一篇: 软件开发的基础知识—软件版本号详解

前阵子在使用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的设置的值自动选中里面的项.

发表于 @ 2008年03月16日 23:55:00|评论(loading...)|编辑

新一篇: 让tomcat支持中文Url传递  | 旧一篇: 软件开发的基础知识—软件版本号详解

评论

#shouzhi2007 发表于2008-12-05 15:52:30  IP: 125.34.50.*
太强了,我也去试试,
#shouzhi2007 发表于2008-12-05 15:52:47  IP: 125.34.50.*
太强了,我也去试试,
发表评论  


登录
Csdn Blog version 3.1a
Copyright © DoItPerfect