1.今天学习了在SSH下如何实现页面前端的Select和Radio,个人感觉很重要在此做笔记,很多地方可以用到。
2.首先效果如下利用struts2的标签来做,首先来看Select:
<select name="departmentId" class="SelectStyle">
<option value="0" selected="selected">请选择部门</option>
<option value="7">┠总经理室</option>
<option value="1">┠市场部</option>
<option value="2"> ┠咨询部</option>
<option value="3"> ┠招生部</option>
<option value="4">┠教学部</option>
<option value="5">┠后勤部</option>
</select>
以上代码都是静态的,写死的不经过数据库,直接呈现在页面中,下面我们利用struts2标签来动态的显示部门信息。其实就是将部门信息显示到下拉列表里面,代码如下:
<s:select name="departmentId" cssClass="SelectStyle"
list="#departmentList" listKey="id" listValue="name"
headerKey="" headerValue="请选择部门">
</s:select>
解释:
list: 每一个Select标签都有一个list 属性,代表的是后台我们已经准备的DepartmentList(部门的集合,具体详见前一篇的DepartmentAction中的list方法),加上#号的原因,是因为我们在Action中是将部门集合放在值栈的Map中保存的.
listKey: 当我们在下拉列表选择了一个部门然后需要提交保存的时候,我们前台传递的其实是id号,所以listKey就是代表的部门id.(简称是用来提交的)
listValue: 我们页面看到的其实是部门的name属性,所以listValue就是代表页面是通过什么来显示的很明显是通过name来显示
(简称用来显示的)
name: 这个属性大家都清楚,是标志这个标签的,服务器端需要在后台得到他的值,所以在DepartmentAction中必须有 departmentId这个属性且需要提供 getter和setter 方法
cssClass:为了保存原来的样式
headerKey:如上图默认是"请选择部门",key就是这个默认值得id这里没有所以为空
headerValue:Select的默认值
3.下面是radio,原代码如下:
<input type="RADIO" name="sex" value="男" id="male"/><label for="male">男</label>
<input type="RADIO" name="sex" value="女" id="female"/><label for="female">女</label>
现修改为:
<s:radio name="gender" list=" {'男', '女'} "></s:radio>
解释:
name:跟上面一样对应着Action中的属性
list: 构建一个map#{‘男’:’男‘,‘女’:’女‘},其中第一个男为key第二个男士value也就是说提交的为男,在页面显示的也是男,跟上 面的Select一样,当key和value一样的时候 我们就可以直接简写为上面的那个代码,更简洁。女同上
附注:
EL跟OGNL的写法区别(因为在JSP中经常出现${},%{},#{},必须对ValueStack熟悉):
EL表达式 JSP中 ${表达式}
Struts2的自定义标签的属性值中使用OGNL用该用%{表达式}
在struts.xml中如果如果需要使用OGNL应该用${表达式}
语法:
%{name} 代表会优先从值栈中的对象栈中取得name属性
%{#name} 代表会从值栈中的Map中取得name属性
%{#user.name} 代表从map中user属性的取得那么属性
#{'k':'v', 'k2':'v2'} 这是代表构建一个Map
{'e1', 'e2'} 这代表构建一个list