五. <s:select> </s:select> 选择框
五.一 前端展示
五.一.一 前端map 展示
map类型表示:
<s:select name="education" list="#{'1':'初中','2':'高中','3':'大学','4':'研究生'}" value="3" headerKey="" headerValue="----请选择学历-------"></s:select>
五.一.二 前端 list 展示
也可以用list类型进行表示
<s:select name="education" list="{'初中','高中','大学','研究生'}" value="'大学'" headerKey="" headerValue="----请选择学历-------"></s:select>
map时 key表示传递的真实数据,value表示在页面上显示的数据。
list时,key与value的值相同,与<s:radio> <s:checkboxlist> 用法基本一样。
k只是 select选择框也是可以进行多选的,有一个multiple的属性,值为true或者false(默认为false)
<s:select name="education" list="#{'1':'初中','2':'高中','3':'大学','4':'研究生'}" value="{'1','3'}" headerKey="" headerValue="----请选择学历-------" multiple="true" size="6"></s:select>
不能用multiple=“multiple”,这样是显示不出来的,也不能单独一个multiple,会报错的,
必须设置成 multiple=“true” 。
size为显示的数目,如果要显示的数目过多,而数据量小,那么下面会用空格进行填充。
从后台传递学历的值来进行显示。
五.二 学历是单个值的普通字段情况
五.二.一 User.java 类
User.java中添加education 学历的属性值
/** * @param education 学历 */ private String education;
实现 setter 和 getter 方法
五.二.二 创建SelectAction.java
SelectAction
public class SelectAction extends ActionSupport{ private static final long serialVersionUID = 1L; public String getData(){ //存储常量学历的集合 List<String> eduList=new ArrayList<String>(); eduList.add("初中"); eduList.add("高中"); eduList.add("大学"); eduList.add("研究生"); //将学历的集合放置到Request域中 ActionContext.getContext().put("eduList",eduList); //设置用户 User user7=new User(7,"两个蝴蝶飞","123","男",24,"在下"); user7.setEducation("大学"); //将user7用户放置到ValueStack的栈顶 ActionContext.getContext().getValueStack().push(user7); return "select"; } }
五.二.三 配置 struts.xml 文件
<!-- 配置select 多选框显示 --> <action name="Select_*" class="com.yjl.web.action.SelectAction" method="{1}"> <result name="select">/WEB-INF/content/select.jsp</result> </action>
五.二.四 编写 /content/select.jsp 页面
在前端界面:
<s:select name="education" list="#request.eduList" value="%{education}" headerKey="" headerValue="----请选择学历-------"></s:select>
输入网址: http://localhost:8080/Struts_Data/Select_getData
会显示:
五.三 学历是多个普通值的情况,可以多选
五.三.一 User.java 中添加集合属性 educations
User.java
/** * @param educations 学历多选 */ private List<String> educations=new ArrayList<String>();
当为集合时,需要在类中就直接实例化,避免出现空指向的问题。
实现setter 和getter 方法
五.三.二 SelectAction 中添加新方法 getData2()
public String getData2(){ List<String> eduList=new ArrayList<String>(); eduList.add("初中"); eduList.add("高中"); eduList.add("大学"); eduList.add("研究生"); //将学历的集合放置到Request域中 ActionContext.getContext().put("eduList",eduList); //设置用户 User user7=new User(7,"两个蝴蝶飞","123","男",24,"在下"); user7.getEducations().add("大学"); user7.getEducations().add("研究生"); //将user7用户放置到ValueStack的栈顶 ActionContext.getContext().getValueStack().push(user7); return "select"; }
五.三.三 配置struts.xml
不需要改变
五.三.四 编写 /content/select.jsp 页面
前端:
<s:select name="educations" list="#request.eduList" headerKey="" headerValue="----请选择学历-------" multiple="true" size="%{#request.eduList.size+1}"></s:select>
这个时候,不需要写value="" ,size时用size+1,+1加的是上面的头
输入网址: http://localhost:8080/Struts_Data/Select_getData2
显示:
五.四 学历是单个对象(常用于显示学生所在的专业,班级和学院)
五.四.一 User.java
User.java
/** * @param education1 学历 */ private SystemConn education1;
实现setter 和getter 方法
五.四.二 编写 SelectAction,添加 getData3() 方法
Action中
public String getData3(){ List<SystemConn> eduList=new ArrayList<SystemConn>(); //模拟数据 SystemConn s1=new SystemConn(1,"edu","初中","初中"); SystemConn s2=new SystemConn(2,"edu","高中","高中"); SystemConn s3=new SystemConn(3,"edu","大学","大学"); SystemConn s4=new SystemConn(4,"edu","研究生","研究生"); //将数据添加到集合中 eduList.add(s1); eduList.add(s2); eduList.add(s3); eduList.add(s4); //将学历的集合放置到Request域中 ActionContext.getContext().put("eduList",eduList); //设置用户 User user7=new User(7,"两个蝴蝶飞","123","男",24,"在下"); user7.setEducation1(s3); //将user7用户放置到ValueStack的栈顶 ActionContext.getContext().getValueStack().push(user7); return "select"; }
五.四.三 配置struts.xml
不需要配置
五.四.四 编写 select.jsp 页面
前端页面:
<s:select name="education1" list="#request.eduList" listKey="id" listValue="value" headerKey="" headerValue="----请选择学历-------" value="%{education1.id}" ></s:select>
其中,添加了两个属性, listKey, listValue, 其中listKey表示的是真正传递的数据,listValue为页面上显示的数据。
五.五 学历是多个List对象(常用于角色的选择)
五.五.一 User.java
User.java
/** * @param educations 学历 */ private List<SystemConn> educations1=new ArrayList<SystemConn>();
实现setter 和getter 方法
五.五.二 SelectAction 中添加 getData4() 方法
Action
public String getData4(){ List<SystemConn> eduList=new ArrayList<SystemConn>(); //模拟数据 SystemConn s1=new SystemConn(1,"edu","初中","初中"); SystemConn s2=new SystemConn(2,"edu","高中","高中"); SystemConn s3=new SystemConn(3,"edu","大学","大学"); SystemConn s4=new SystemConn(4,"edu","研究生","研究生"); //将数据添加到集合中 eduList.add(s1); eduList.add(s2); eduList.add(s3); eduList.add(s4); //将学历的集合放置到Request域中 ActionContext.getContext().put("eduList",eduList); //设置用户 User user7=new User(7,"两个蝴蝶飞","123","男",24,"在下"); user7.getEducations1().add(s3); user7.getEducations1().add(s4); //将user7用户放置到ValueStack的栈顶 ActionContext.getContext().getValueStack().push(user7); return "select"; }
五.五.三 配置struts.xml 文件
不需要改变
五.五.四 编写 /content/select.jsp 页面
<s:select name="education1" list="#request.eduList" listKey="id" listValue="value" headerKey="" headerValue="----请选择学历-------" value="%{educations1.{id}}" multiple="true" size="%{#request.eduList.size+1}" ></s:select>
注意此时value的写法. educations.{id}
输入网址: http://localhost:8080/Struts_Data/Select_getData4
运行结果:
这就是struts的UI标签的常用用法。
本章节代码链接为:
链接:https://pan.baidu.com/s/1uen9t3Jm2yHfz0Zicr__Vg 提取码:t1jl
谢谢您的观看!!!