本文研究的主要是struts2框架单选按钮详解及枚举类型的转换的相关示例,具体如下。
使用struts2标签,毫无疑问要先引入标签库:
1
|
<%@ taglib prefix= "s" uri= "/struts-tags" %>
|
假设radio单选框中list的值为一个map集合:
1
2
|
<s:radio list= "#{'man':'男','women':'女'}" name= "gender" listkey= "key" listvalue= "value" value= "'man'"
theme= "simple" />
|
注:
1.name属性还是对应html代码的name属性。
2.listkey属性对应html代码的value属性。
3.listvalue属性对应html代码label标签属性。
4.value属性是指:当value的值和集合中的值匹配时就选中(如果value的值为字符串时要加上单引号)。
执行后会解析为html代码,如图:
下面我们通过一个案例来说明:
修改用户的时候,跳转到修改界面,在修改界面要回显用户的性别,这里性别我们使用枚举来表示。
最开始的用户界面:
实现代码如下!!!!
项目结构:
用户界面:
1
2
3
4
5
6
7
|
<body>
<form action= "enumaction_test.action" method= "post" >
请选择性别:
<s:radio list= "#{'man':'男','women':'女'}" name= "gender" listkey= "key" listvalue= "value" value= "'man'" theme= "simple" />
<input type= "submit" value= "提交" >
</form>
</body>
|
后台action代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
public class enumaction {
/*定义性别,默认是男*/
private gender gender = gender.man;
public gender getgender() {
return gender;
}
public void setgender(gender gender) {
this.gender = gender;
}
/*测试方法*/
public string test(){
return "success" ;
}
}
|
注:因为我们使用的是枚举类型,所以要进行类型转换(具体转换方法在前面的博客中有提到)。
枚举类型转换类代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
public class enumtypeconverter extends defaulttypeconverter {
@suppresswarnings ( "rawtypes" )
@override
public object convertvalue(map<string, object> context, object value, class totype) {
/*从前台到后台即从字符串转为枚举类型*/
if (totype == gender.class){
/*把value强转为数组类型*/
string[] params = (string[]) value;
return gender.valueof(params[0]);
} else if (totype == string.class){
/*从后台action传到前台,即gender类型转换为string类型 */
/*把value强转为gender*/
gender gender = (gender) value;
return gender.tostring();
}
return null ;
}
}
|
定义全局类型转的属性文件:
1
|
com.lixue.bean.gender=com.lixue.converter.enumtypeconverter
|
跳转后的结果页面(用户修改界面):
1
2
3
|
<body>
您的性别:<s:radio list= "#{'man':'男','women':'女'}" name= "gender" listkey= "key" listvalue= "value" value= "gender" theme= "simple" />
</body>
|
注:在修改界面是如何实现用户当前所选性别的回显呢?关键是看value值,上述代码中的value我就写了一个gender,其实这个gender是在action中定义的一个属性,上一篇文章我们讲ognl的时候就说过,action中的属性会保存在值栈中,我们取值栈中的属性,直接通过属性名称就可以获取,不需要通过#命名空间的形式获取。获取完然后和前面的map集合进行匹配,判断是否勾选。
附:
1.有人可能会有疑问,为什么listkey可以直接写上key,listvalue可以直接写value。
解答:struts2在解析<s:radio>标签中的那个list集合时,使用的是iterator,iterator的功能是每次循环都会将结果(每次获取一个entry对象)保存在值栈的栈顶,所以通过ognl表达式取值的时候,直接通过对象的属性(entry的属性名称为key和value)名称来取值即可,不需要使用#命名空间的方式,不明白ognl表达式的同学可以看上一篇文章。
2.我们会发现在写标签的时候我们总会写theme这个属性,这个属性的功能是为了避免struts2在解析标签的时候,生成一些不必要的代码,但是每次都要写,岂不是很坑爹,其实我们可以在struts.xml文件中配置一个常量就可以达到效果:
1
2
|
<!--struts2标签主题样式-->
<constant name= "struts.ui.theme" value= "simple" />
|
总结
这几篇struts框架的学习,颇有几分拨开云雾见青天之感,对于java框架,算是有了比较清晰的了解,spring,mybatis等,诸如此类,万法相通。。。
以上就是本文关于struts2单选按钮详解及枚举类型的转换代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
原文链接:http://blog.csdn.net/lzm1340458776/article/details/29814825
相关文章
- 个人网站搭建:如何挑选具有弹性扩展能力的服务器? 2025-06-10
- 个人服务器网站搭建:如何选择适合自己的建站程序或框架? 2025-06-10
- 64M VPS建站:能否支持高流量网站运行? 2025-06-10
- 64M VPS建站:怎样选择合适的域名和SSL证书? 2025-06-10
- 64M VPS建站:怎样优化以提高网站加载速度? 2025-06-10
- 2025-07-10 怎样使用阿里云的安全工具进行服务器漏洞扫描和修复?
- 2025-07-10 怎样使用命令行工具优化Linux云服务器的Ping性能?
- 2025-07-10 怎样使用Xshell连接华为云服务器,实现高效远程管理?
- 2025-07-10 怎样利用云服务器D盘搭建稳定、高效的网站托管环境?
- 2025-07-10 怎样使用阿里云的安全组功能来增强服务器防火墙的安全性?
快网idc优惠网
QQ交流群
-
2025-06-04 47
-
Linux环境下python2.7.6升级python3.5.2
2025-05-27 81 -
2025-05-25 50
-
2025-06-04 36
-
2025-06-04 69