逝去的41

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

用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
DoItPerfect的公告
<a target=blank href=tencent://message/?uin=50845916&Site=DoItPerfect&Menu=yes><img border="0" SRC=http://wpa.qq.com/pa?p=1:50845916:12 alt="点击这里给我发消息"></a>
文章分类
程序
存档

原创  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的设置的值自动选中里面的项.

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

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

  • 发表评论
  • 评论内容:
  •  
Copyright © DoItPerfect
Powered by CSDN Blog