貌似Struts2 标签都快忘光了 今天先来一发struts2的select标签:
首先从简到难,静态赋值:
| <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”。
再看看设置下拉列表的数据:
| <% 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公司"); %> |
| <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的代码:
| @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的代码:
| @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(公司名称)字段。很简单,很强大,很快捷。