`

关于Struts2中使用枚举和静态调用

 
阅读更多

struts2中经常用到枚举,代码如下:

/**
 * 用户级别
 * @author LiYongqaing
 */
public enum UserLevel {
	/**超级管理员*/
	SUPER_ADMIN{
		@Override
		public String getValue() {
			return "超级管理员";
		}
	},
	/**局长*/
	JUZHANG{
		@Override
		public String getValue() {
			return "局长";
		}
	},
	/**主任*/
	ZHUREN{
		@Override
		public String getValue() {
			return "主任";
		}
	},
	/**系统管理员*/
	ADMIN{
		@Override
		public String getValue() {
			return "系统管理员";
		}
	},
	/**科长*/
	KEZHANG{
		@Override
		public String getValue() {
			return "科长";
		}
	},
	/**科员*/
	KEYUAN{
		@Override
		public String getValue() {
			return "科员";
		}
	};
	public abstract String getValue();
	public static List<String> getValues(){
		List<String> list = new ArrayList<String>();
		for (UserLevel level : UserLevel.values()) {
			list.add(level.getValue());
		}
		return list;
	}
	public static List<String> getValues2(){
		List<String> list = new ArrayList<String>();
		for (UserLevel level : UserLevel.values()) {
			if(!"超级管理员".equals(level.getValue())){
				list.add(level.getValue());
			}
		}
		return list;
	}
}

 还需要定义类型转换器:

@SuppressWarnings("unchecked")
public class UserLevelConverter extends StrutsTypeConverter {
	@Override
	public Object convertFromString(Map arg0, String[] arg1, Class arg2) {
		UserLevel[] levels = UserLevel.values();
		for (UserLevel level : levels) {
			if(level.getValue().equals(arg1[0])){
				return level;
			}
		}
		return null;
	}
	@Override
	public String convertToString(Map arg0, Object arg1) {
		UserLevel level = (UserLevel) arg1;
		return level.getValue();
	}

}

 

 

struts2标签调用如下:

<s:select name="userLevel" list="@com.itqiang.bean.user.UserLevel@getValues2()" value="@com.itqiang.bean.user.UserLevel@KEYUAN.getValue()" />

 

注意静态方法调用需要:

<!-- OGNL可以使用静态方法 -->
 <constant name="struts.ognl.allowStaticMethodAccess" value="true"/> 

0
1
分享到:
评论
2 楼 free0007 2013-01-18  
sweat89 写道
额。。你们struts2经常用到枚举吗

经常用,不过觉得挺好用的,一个类型转换就ok
1 楼 sweat89 2013-01-14  
额。。你们struts2经常用到枚举吗

相关推荐

    传智播客struts2.1源代码_自定义类型转换器

    在Struts2中,类型转换器(TypeConverter)扮演着关键角色,它负责将HTTP请求参数转换为Action类中相应属性的正确数据类型。本教程主要探讨Struts2.1源代码中的自定义类型转换器。 1. **类型转换器的作用** 类型...

    信息办公Struts图书馆管理系统-struts

    【信息办公】Struts图书馆管理系统是一个基于Java技术的Web应用程序,它使用了经典的Struts1.2框架,结合了JSP2.0、Servlet2.4、JDK1.5和Tomcat5.5服务器来实现高效且稳定的图书管理功能。这个系统利用了Java的强大...

    java试题 java笔试题 java面试题

    JDK 1.6 中引入了多个新特性,包括 desktop 类和 systemtray 类、使用 JAXB2 实现对象与 xml 之间映射、理解 STAX、使用 compiler API 等。 七、Hibernate 工作机制 Hibernate 的工作机制可以分为八个步骤:读取并...

    74个java面试题,只有题目没有答案

    * 如何在 Java 中使用 SQL 数据库?使用 JDBC(Java Database Connectivity)连接数据库。 21. Java API 文档 * Java API 文档是什么?Java API 文档是一种文档,用于描述 Java 类和方法的使用。 22. Java 日期和...

    各大软件公司JAVA常用面试题.docx

    7. 单例模式:常见实现有饿汉式(静态常量)、懒汉式(静态代码块)、双检锁/双重校验锁(DCL)和枚举。 8. 上行调用:子类对象可以向上转型为父接口,调用print方法。由于子类没有声明为final,所以不能直接调用...

    大数据分析培训机构学习路线.pdf

    这部分包括静态导入、自动封箱拆箱、可变参数、增强for循环、枚举类型、类加载器、反射、内省、泛型、注解和动态代理。这些特性使得Java语言在复杂系统开发中更具灵活性和效率。其中,反射机制允许程序在运行时动态...

    Java高级程序设计实战教程第三章-Java反射机制.pptx

    安排实际操作,让学生在编程环境中使用反射完成一些任务,如实现动态加载配置文件中的类并执行特定方法。 通过本章的学习,读者将掌握Java反射机制的核心概念,了解如何在实际项目中运用反射,以及其优缺点。通过...

    超级有影响力霸气的Java面试题大全文档

    子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...

    java书籍

    这本书可能介绍了Struts 2的配置、拦截器、动作类、结果类型、动态方法调用、国际化、异常处理和插件的使用,以及如何结合其他技术如Hibernate进行数据库操作。 5. **《Beautiful Code》英文版(beautiful-code-en)*...

    JAVA技术路线图.docx

    自动装箱/拆箱简化了基本类型与包装类之间的转换,枚举类提供了更安全的常量表示,可变参数和可变返回类型增加了函数的灵活性,增强循环和静态导入则提高了代码的可读性和简洁性。 进入JavaEE领域,初级软件工程师...

    java面试题综合

    27. 多表操作:在Hibernate中使用SessionFactory的openSession和Transaction,进行批处理。 28. 用户、角色、权限关系:通常采用三表设计,用户表、角色表和权限表,通过中间表关联。 29. Hibernate控制实现:使用...

    Java实效编程百例

    6. 泛型:理解泛型的用途,学习如何在类、接口、方法中使用泛型,以提高代码的类型安全性和复用性。 三、高级篇 7. 反射:探讨Java反射机制,学习如何在运行时动态获取类信息,创建和调用对象,以及修改私有属性和...

    JAVA技术路线图.pdf

    随着技能的提升,中级软件工程师会涉及SSH、SSI等经典架构,如Struts1和Struts2的表现层框架,Spring的业务层框架,以及Hibernate持久层框架。这些框架的集成和使用能够提升开发效率,实现更复杂的功能。 高级软件...

    java笔试面试题(含有笔试题,核心技术,重点知识,struts,hibernate,spring,eclipse)

    2. **继承**:继承允许一个类(子类)继承另一个类(父类)的特性和行为。这有助于代码复用和减少冗余代码。继承还提供了层次化的分类结构,使得代码更加灵活和易于扩展。 3. **多态**:多态是指允许不同类的对象对...

    JAVA技术体系

    - **枚举类**:学习如何定义和使用枚举类型。 - **可变参数与返回类型**:了解可变参数列表和可变返回类型的功能。 - **增强循环**:使用增强for循环简化遍历过程。 - **静态导入**:简化代码中的静态方法调用。 ##...

    Java技术体系图.docx

    泛型提供类型安全,注释符用于文档和元数据,自动装箱和拆箱简化了基本类型和包装器类之间的转换,枚举类提供了固定的常量集合,可变参数和可变返回类型增加了函数的灵活性,增强循环和静态导入优化了代码结构。...

    小码哥Java学科的课程大纲.docx

    1. **Struts2**:介绍Struts2框架的架构及使用方法。 2. **Spring MVC**:讲解Spring MVC框架的基本概念及配置。 3. **MyBatis**:介绍MyBatis框架的使用及ORM映射机制。 4. **Hibernate4.x**:探讨Hibernate框架的...

    JAVA技术体系.pdf

    - **网络编程**:Applet用于Web浏览器中的小程序,Socket编程实现TCP/IP通信,NIO提供非阻塞I/O,RMI和CORBA支持远程方法调用和分布式计算。 2. **JavaEE初级软件工程师**: - **JSF框架**:用于构建Web应用程序...

    Java面试笔试资料大全

    5. **`switch` 语句**:可以作用在 `byte`, `char`, `short`, `int`, `枚举类型`和 `String` 上。 6. **短整型加法**:`short s1 = 1; s1 = s1 + 1;` 会引发编译错误,因为自动装箱可能导致溢出,而 `s1 += 1;` ...

Global site tag (gtag.js) - Google Analytics