Struts2单选按钮详解及枚举类型的转换代码示例

 更新时间:2018年02月07日 10:29:21   作者:lavimer  
这篇文章主要介绍了Struts2单选按钮详解及枚举类型的转换代码示例,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下

本文研究的主要是Struts2框架单选按钮详解及枚举类型的转换的相关示例,具体如下。

使用struts2标签,毫无疑问要先引入标签库:

<%@ taglib prefix="s" uri="/struts-tags"%> 

假设radio单选框中List的值为一个Map集合:

<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代码,如图:

下面我们通过一个案例来说明:

修改用户的时候,跳转到修改界面,在修改界面要回显用户的性别,这里性别我们使用枚举来表示。

最开始的用户界面:

实现代码如下!!!!

项目结构:

用户界面:

<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代码:

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";
	}
}

注:因为我们使用的是枚举类型,所以要进行类型转换(具体转换方法在前面的博客中有提到)。

枚举类型转换类代码:

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;
	}
}

定义全局类型转的属性文件:

com.lixue.bean.Gender=com.lixue.converter.EnumTypeConverter 

跳转后的结果页面(用户修改界面):

<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文件中配置一个常量就可以达到效果:

<!--struts2标签主题样式--> 
  <constant name="struts.ui.theme" value="simple" /> 

总结

这几篇Struts框架的学习,颇有几分拨开云雾见青天之感,对于Java框架,算是有了比较清晰的了解,spring,mybatis等,诸如此类,万法相通。。。

以上就是本文关于Struts2单选按钮详解及枚举类型的转换代码示例的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • 浅谈java中的局部变量和全局变量

    浅谈java中的局部变量和全局变量

    这篇文章主要涉及了java中的局部变量和全局变量,就二者的含义、生存时间和创建位置作了介绍,需要的朋友可以参考下。
    2017-09-09
  • 详解Spring Cloud 断路器集群监控(Turbine)

    详解Spring Cloud 断路器集群监控(Turbine)

    这篇文章主要介绍了详解Spring Cloud 断路器集群监控(Turbine),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • SpringAOP实现登录验证的操作代码

    SpringAOP实现登录验证的操作代码

    这篇文章主要介绍了SpringAOP实现登录验证功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • postman中实现传递@RequestBody参数

    postman中实现传递@RequestBody参数

    这篇文章主要介绍了postman中实现传递@RequestBody参数,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 详解使用批处理方式配置Java环境

    详解使用批处理方式配置Java环境

    这篇文章主要介绍了详解使用批处理方式配置Java环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • IDEA巧用Postfix Completion让码速起飞(小技巧)

    IDEA巧用Postfix Completion让码速起飞(小技巧)

    这篇文章主要介绍了IDEA巧用Postfix Completion让码速起飞,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • SpringBoot3整合邮件服务实现邮件发送功能

    SpringBoot3整合邮件服务实现邮件发送功能

    本文介绍了spring boot整合email服务,实现发送验证码,邮件(普通文本邮件、静态资源邮件、附件邮件),文中通过代码示例介绍的非常详细,坚持看完相信对你有帮助,需要的朋友可以参考下
    2024-05-05
  • 简单总结单例模式的4种写法

    简单总结单例模式的4种写法

    今天带大家学习java的相关知识,文章围绕着单例模式的4种写法展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • 一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)详细教程

    一步步教你整合SSM框架(Spring MVC+Spring+MyBatis)详细教程

    使用SSM(Spring、SpringMVC和Mybatis)已经有段时间了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,下面这篇文章主要给大家介绍了关于整合SSM框架:Spring MVC + Spring + MyBatis的相关资料,需要的朋友可以参考下。
    2017-07-07
  • 详解Java如何在Array和List之间进行转换

    详解Java如何在Array和List之间进行转换

    这篇文章主要为大家介绍了详解Java如何在Array和List之间进行转换的方法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05

最新评论