Struts2学习笔记之s:select标签

貌似Struts2 标签都快忘光了  今天先来一发struts2的select标签:

首先从简到难,静态赋值:

1
<s:select name="user.sex" list="#{'0':'男','1':'女'}" label="性别" headerKey="" headerValue="请选择性别"></s:select>

这样就会出现下拉框,默认是请选择性别,点开后是男女,根据firebug,看到男女前面对应的是0和1,比起原生态的select标签简单多了。

注释:这里从页面来静态构造下拉选项,关键点是list=”#{‘0′:’男’,’1′:’女’}” 通过它实现的select的两个option 。headerKey指定默认的选项”key”,headerValue指定默认的选项”value”。

再看看设置下拉列表的数据:

1
2
3
4
5
6
7
8
    <%  
            java.util.HashMap map = new java.util.LinkedHashMap();  
            map.put(1, "A公司");  
            map.put(2, "B公司");  
            map.put(3, "C公司");  
            request.setAttribute("map", map);  
            request.setAttribute("aa", "D公司");  
    %>

1
<s:select list="#request.map"  label="abc" listKey="key" listValue="value" value="#request.aa"  headerKey="0" headerValue="aabb"></s:select>

value的值设置为了2,所以初始化下拉框时,会自动选择key值为2的选项。

最后,配合Struts2的action看看效果吧:

UserDao的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@Repository("userDao")
public interface UserDao extends SqlMapper {
 
    public List<User> selectAll();
    public User getById(Integer id);
    public User loginCheck(@Param("loginName")String login_name,@Param("password")String password);
    public int updateUser(User user);
    public int deleteById(Integer id);
    public int add(User user);
    @Select("SELECT a.*,b.* from users a ,orgs b where a.org_id = b.id")
    public List<Map> getUserInfo();
    @Select("SELECT * from orgs ORDER BY id")
    public List<Map> getOrgs();
}

UserAction的代码:

1
2
3
4
5
6
7
8
9
10
11
12
@Action("getuserinfo")
public String getAllUsers() {
List<Map> userList = userDao.getUserInfo();
List<Map> orgs = userDao.getOrgs();
if (userList != null) {
ServletActionContext.getRequest().setAttribute("userlist", userList);
ServletActionContext.getRequest().setAttribute("orgs", orgs);
return SUCCESS;
} else {
return ERROR;
}
}

试图jsp页面:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<div class="adduserbox">
    <div class="tit">新建帐号<span>X</span></div>
    <form action="adduserinfo.feinno" method="post" name="saveForm" id="saveForm">
    <div class="content1">
     <div class="name">
     <div class="fields">姓名:</div> <input type="text" name ="name" placeholder="请输入姓名" autocomplete="off">
     </div>
     <div class="name">
     <div class="fields">电话:</div> <input type="text" name ="svc_url"  placeholder="请输入电话号码" autocomplete="off">
     </div>
     <div class="name">
     <div class="fields">公司:</div> <s:select name="company" list="#request.orgs" headerKey="" headerValue="请选择公司" listKey="id" listValue="org_name"></s:select>
     </div>
     <div class="name">
     <div class="fields">邮箱: </div><input type="text" name ="img_url"  placeholder="请输入邮箱地址" autocomplete="off">
     </div>
     <div class="name">
     <div class="fields">登录帐号:</div> <input type="text" name ="img_url"  placeholder="请输入登陆账号" autocomplete="off">
     </div>
     <div class="other">
     <button class="btn  left blue" id="saveQuickService">保存</button>
     <button class=" write btn  right" id="calcle">取消</button>
     </div>
    </div>
    </form>
</div>

这段代码是jsp里面的一块,点击新增用户弹出的弹出窗。

大家可以看到在“公司”这一个表单里的使用方法,首先给一个名称name属性,然后需要现实的List,list属性,listKey说明下拉框的key值对应id(公司ID)字段,listValue说明下拉框的显示部分对应org_name(公司名称)字段。很简单,很强大,很快捷。

posted @ 2016-04-27 03:21  托马斯布莱克  阅读(3478)  评论(0编辑  收藏  举报