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"/>
相关推荐
在Struts2中,类型转换器(TypeConverter)扮演着关键角色,它负责将HTTP请求参数转换为Action类中相应属性的正确数据类型。本教程主要探讨Struts2.1源代码中的自定义类型转换器。 1. **类型转换器的作用** 类型...
【信息办公】Struts图书馆管理系统是一个基于Java技术的Web应用程序,它使用了经典的Struts1.2框架,结合了JSP2.0、Servlet2.4、JDK1.5和Tomcat5.5服务器来实现高效且稳定的图书管理功能。这个系统利用了Java的强大...
JDK 1.6 中引入了多个新特性,包括 desktop 类和 systemtray 类、使用 JAXB2 实现对象与 xml 之间映射、理解 STAX、使用 compiler API 等。 七、Hibernate 工作机制 Hibernate 的工作机制可以分为八个步骤:读取并...
* 如何在 Java 中使用 SQL 数据库?使用 JDBC(Java Database Connectivity)连接数据库。 21. Java API 文档 * Java API 文档是什么?Java API 文档是一种文档,用于描述 Java 类和方法的使用。 22. Java 日期和...
7. 单例模式:常见实现有饿汉式(静态常量)、懒汉式(静态代码块)、双检锁/双重校验锁(DCL)和枚举。 8. 上行调用:子类对象可以向上转型为父接口,调用print方法。由于子类没有声明为final,所以不能直接调用...
这部分包括静态导入、自动封箱拆箱、可变参数、增强for循环、枚举类型、类加载器、反射、内省、泛型、注解和动态代理。这些特性使得Java语言在复杂系统开发中更具灵活性和效率。其中,反射机制允许程序在运行时动态...
安排实际操作,让学生在编程环境中使用反射完成一些任务,如实现动态加载配置文件中的类并执行特定方法。 通过本章的学习,读者将掌握Java反射机制的核心概念,了解如何在实际项目中运用反射,以及其优缺点。通过...
子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...
这本书可能介绍了Struts 2的配置、拦截器、动作类、结果类型、动态方法调用、国际化、异常处理和插件的使用,以及如何结合其他技术如Hibernate进行数据库操作。 5. **《Beautiful Code》英文版(beautiful-code-en)*...
自动装箱/拆箱简化了基本类型与包装类之间的转换,枚举类提供了更安全的常量表示,可变参数和可变返回类型增加了函数的灵活性,增强循环和静态导入则提高了代码的可读性和简洁性。 进入JavaEE领域,初级软件工程师...
27. 多表操作:在Hibernate中使用SessionFactory的openSession和Transaction,进行批处理。 28. 用户、角色、权限关系:通常采用三表设计,用户表、角色表和权限表,通过中间表关联。 29. Hibernate控制实现:使用...
6. 泛型:理解泛型的用途,学习如何在类、接口、方法中使用泛型,以提高代码的类型安全性和复用性。 三、高级篇 7. 反射:探讨Java反射机制,学习如何在运行时动态获取类信息,创建和调用对象,以及修改私有属性和...
随着技能的提升,中级软件工程师会涉及SSH、SSI等经典架构,如Struts1和Struts2的表现层框架,Spring的业务层框架,以及Hibernate持久层框架。这些框架的集成和使用能够提升开发效率,实现更复杂的功能。 高级软件...
2. **继承**:继承允许一个类(子类)继承另一个类(父类)的特性和行为。这有助于代码复用和减少冗余代码。继承还提供了层次化的分类结构,使得代码更加灵活和易于扩展。 3. **多态**:多态是指允许不同类的对象对...
- **枚举类**:学习如何定义和使用枚举类型。 - **可变参数与返回类型**:了解可变参数列表和可变返回类型的功能。 - **增强循环**:使用增强for循环简化遍历过程。 - **静态导入**:简化代码中的静态方法调用。 ##...
泛型提供类型安全,注释符用于文档和元数据,自动装箱和拆箱简化了基本类型和包装器类之间的转换,枚举类提供了固定的常量集合,可变参数和可变返回类型增加了函数的灵活性,增强循环和静态导入优化了代码结构。...
1. **Struts2**:介绍Struts2框架的架构及使用方法。 2. **Spring MVC**:讲解Spring MVC框架的基本概念及配置。 3. **MyBatis**:介绍MyBatis框架的使用及ORM映射机制。 4. **Hibernate4.x**:探讨Hibernate框架的...
- **网络编程**:Applet用于Web浏览器中的小程序,Socket编程实现TCP/IP通信,NIO提供非阻塞I/O,RMI和CORBA支持远程方法调用和分布式计算。 2. **JavaEE初级软件工程师**: - **JSF框架**:用于构建Web应用程序...
5. **`switch` 语句**:可以作用在 `byte`, `char`, `short`, `int`, `枚举类型`和 `String` 上。 6. **短整型加法**:`short s1 = 1; s1 = s1 + 1;` 会引发编译错误,因为自动装箱可能导致溢出,而 `s1 += 1;` ...