`

struts2自定义枚举类型

阅读更多
1 枚举类
public enum TrialType{
    BUG("BUG"), IMPROVE("改进"), REQUIREMENT("需求");
    
    private String value;

    private TrialType(String value) {
        this.value = value;
    }

    public String getValue() {
        return value;
    }
    
    public String getKey(){
        return this.toString();
    }
    
    public static void main(String[] args){
        System.out.println(Enum.valueOf(TrialType.class, "BUG"));
        for(TrialType t : TrialType.values()){
            System.out.println(t.getValue());
            System.out.println(t.getKey());
        }
    }
    // bug 改进 需求
}// 反馈种类


2 ACTION中
    2.1 显示成select
private Map<String, String> trialTypes = Maps.newHashMap();

    public Map<String, String> getTrialTypes() {
        for (TrialType t : TrialType.values()) {
            trialTypes.put(t.getKey(), t.getValue());
        }
        return trialTypes;
    }


3 页面上
<s:select list="trialTypes"
        listKey="key" listValue="value" name="trialType" />


4 STRUTS2转换类
public class GenericEnumConverter extends StrutsTypeConverter {

    @SuppressWarnings("unchecked")
    @Override
    public Object convertFromString(Map context, String[] values, Class toClass) {
        if (toClass.isEnum()) {
            if (values == null) {// 这个value的值就是 传来参数,比如性别的:男或女.
                return null;
            }
            if (values.length == 1) {// 大家都知道表单中的name是可以同名的,当然会有数个的情况
                return Enum.valueOf(toClass, values[0]);// toClass就是哪个枚举了比如我这的:SexType枚举,调用Enum.valueOf就可以根据String返回相应对象了.
            } else {
                Object[] oo = new Object[values.length];
                for (int i = 0; i < values.length; i++) {
                    oo[i] = Enum.valueOf(toClass, values[i]);
                }
                return oo;
            }
        } else {
            return null;
        }
    }

    @Override
    public String convertToString(Map context, Object o) {
        return null;
    }

}

在SRC下添加xwork-conversion.properties

java.lang.Enum=com.snda.swp.util.GenericEnumConverter

5 MYSQL 映射 ENUM类型需要注意
不能定义为tinyint 1位的不能会报错 至少2位
分享到:
评论

相关推荐

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

    创建一个自定义类型转换器,比如转换一个自定义的枚举类型。首先创建一个实现了`TypeConverter`接口的类,然后在Action类中使用注解或在配置文件中注册。接着,当Struts2接收到相关参数时,会自动调用自定义转换器...

    Struts2 自定类型转换器(三十四)

    在实际项目中,自定义类型转换器可能用于处理如日期格式、货币格式、枚举类型等特殊数据类型的转换。例如,我们可以创建一个转换器处理日期输入,将用户输入的"yyyy-MM-dd"格式字符串转换为Java的`java.util.Date`...

    struts2枚举值、日期值转换示例

    在这个“struts2枚举值、日期值转换示例”中,我们将关注如何自定义枚举值和日期值的转换器。 首先,枚举(Enum)在Java中是一种特殊的类,用于表示有限集合中的固定数量的值。在Struts2中,如果Action类的属性是...

    [原]Struts2类型转换

    7. **实战应用**:在实际项目中,类型转换常常用于处理复杂的对象,如枚举类型、自定义数据结构或者需要特殊验证的输入。通过自定义类型转换器,开发者可以确保用户输入的数据符合业务逻辑和安全要求。 总之,...

    struts2 2.09 java doc

    Struts2的JavaDoc文档包含了2.09版本的所有公开API接口、类、枚举、注解和方法的详细说明,是开发者了解和学习Struts2框架的重要参考资料。`struts-2.0.9-core.chm`文件是Struts2核心组件的JavaDoc,涵盖了框架的...

    struts2对Ognl的封装--TypeConverter

    总的来说,Struts2对OGNL的封装主要体现在TypeConverter上,这是一个强大的工具,允许开发者自定义数据类型转换,以适应各种复杂的业务场景。理解并熟练使用TypeConverter能够极大地提升Struts2应用的灵活性和可维护...

    struts2的类型转换详解

    开发者只需实现`org.apache.struts2.conversion.Converter`接口,然后通过配置注册这个转换器,即可让Struts2在处理特定类型时使用自定义的转换逻辑。 在转换过程中,如果出现任何异常,Struts2的`conversionError`...

    Struts2中的参数传递

    2. **类型转换**:为了确保传入的字符串能够正确地转换为所需的Java对象类型,Struts2提供了内置的类型转换器,并允许用户自定义类型转换逻辑。这一步骤对于确保应用程序的安全性和数据完整性至关重要。 接下来,...

    Struts2.0属性转换器的作用说明

    在实际开发中,我们可能需要对特定的数据格式进行特殊的转换,例如,处理特定的日期格式或者自定义的枚举类型。这时,可以自定义属性转换器。自定义转换器需要实现`org.apache.struts2.util.FieldConverter`接口或者...

    Struts2.1.6实战课件精解_02

    默认情况下,Struts2提供了基本类型的转换器,但有时需要自定义转换器以适应特定的数据类型,如日期、自定义枚举等。 - **自定义局部类型转换器**:可以在action或结果中定义,仅对该action或结果有效。 - **自定义...

    enum-converter:枚举的自定义转换器

    总之,枚举的自定义转换器是Java开发中一个实用的工具,它使得枚举类型能够更灵活地与其他数据格式进行互换。通过实现不同的转换器,我们可以方便地处理枚举与字符串、整数或其他复杂对象之间的转换,提高代码的...

    2014 java servet jdbc struts struts2面试题

    8. **枚举类型**:它的用法和特性,以及在设计模式中的应用。 9. **内部类与匿名类**:理解它们的用途和创建方式。 10. **Java集合框架**:List、Set、Queue和Map接口,以及它们的实现类如ArrayList、LinkedList、...

    struts2注释

    自定义注解可以包含变量,这些变量可以有默认值,并且可以使用枚举类型作为变量的类型。例如: ```java public @interface MyAnnotation { String value1() default "abc"; MyEnum value2() default MyEnum....

    struts2增删改查综合案例

    - 配置全局结果类型和常量,如`struts.action.extension`来指定请求的扩展名。 3. **Action类**: - 创建Action类,继承自`ActionSupport`,并实现CRUD方法。 - Action类中的每个方法都对应一个用户请求,返回值...

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

    例如,枚举类型用于定义固定的常量集合,泛型则可以减少类型转换的错误,静态导入则简化了导入多个静态成员的代码。 Tomcat5.5是一个流行的开源Java应用服务器,专门用于运行Servlet和JSP应用。它是Apache软件基金...

    struts2.0中英文帮助手册

    2. **枚举和常量**:展示框架中使用的枚举类型和常量,例如Action、ResultType等。 3. **异常和错误**:列出可能抛出的异常,如StrutsException,以及如何处理这些异常。 4. **注解**:说明框架中使用的注解,如@...

    struct2大纲整理1

    - Struts2允许自定义拦截器,并可以通过`&lt;package&gt;`标签的`interceptors`或`default-interceptor-ref`定义拦截器栈。Struts2提供了一些内置拦截器,如`params`(处理请求参数)、`validation`(执行验证)、`i18n`...

    Struts图书馆管理系统

    4. **JDK 1.5**:Java Development Kit的第5个主要版本,引入了诸多新特性和改进,如自动装箱/拆箱、枚举类型、可变参数、泛型、注解等。这些特性使得代码更加安全、高效且易于维护,对于开发复杂的Java应用程序至关...

    spring2.5 struts1.2 hibernate3.0完美全部jar包

    3.0版本是Hibernate的一个重大升级,它引入了HQL(Hibernate Query Language),提供了更强大的查询功能,支持CGLIB和JPA(Java Persistence API),并且对JDK 1.5的特性如枚举类型和注解有了更好的支持。...

    Eclipse开发struts完全指南

    JDK 5.0 是Java SE(标准版)的一个重要版本,引入了许多新的特性,如类型注解、枚举、泛型等。安装时需确保将其bin目录添加到系统PATH环境变量中,以便在任何地方都能执行Java命令。 #### Tomcat 5.5.9 Tomcat是一...

Global site tag (gtag.js) - Google Analytics