`

struts2枚举转换器(helloworld)

 
阅读更多

1.枚举类:

public enum AreaType implements IEnumConverter {
	
	FZ("福州", 591), 
	XM("厦门", 592);
	
	private String text;
	private Integer value;

	private AreaType(String text, Integer value) {
		this.text = text;
		this.value = value;
	}

	@Override
	public String getName() {
		return this.name();
	}

	@Override
	public Integer getOrdinal() {
		return this.ordinal();
	}

	@Override
	public String getText() {
		return text;
	}

	@Override
	public Integer getValue() {
		return value;
	}

	/**
	 * 根据序数得到枚举
	 * 
	 * @param ordinal
	 * @return
	 */
	public static AreaType getByOrdinal(Integer ordinal) {
		if (null != ordinal) {
			for (AreaType t : AreaType.values()) {
				if (t.ordinal() == ordinal) {
					return t;
				}
			}
		}
		return null;
	}
}

2.接口,让枚举实现这个接口,达到所有的枚举都可以转换的效果

/**
 * 自定义的枚举转换器接口,自己定义的枚举实现这个接口,struts2的转换器就会对其进行转换
 * 
 * @author chenl 创建日期 Dec 1, 2011
 */
public interface IEnumConverter {
	/**
	 * 得到序数
	 */
	Integer getOrdinal();

	/**
	 * 返回此枚举常量的名称,在其枚举声明中对其进行声明
	 */
	String getName();

	String getText();
	
	Integer getValue();
}

3.枚举转换器,继承StrutsTypeConverter类

/**
 * 枚举转换器
 * 
 * @author chenl 创建日期 Dec 1, 2011
 */
public class EnumCommonConverter extends StrutsTypeConverter {

	@Override
	public Object convertFromString(Map context, String[] values, Class clazz) {
		System.out.println("进入转换器......");
		String str = values[0];
		if (str != null && !"".equals(str)) {
			try {
				IEnumConverter[] enums = (IEnumConverter[]) clazz.getMethod("values").invoke(null);// 调用枚举的values方法
				if (null != enums && enums.length > 0) {
					for (IEnumConverter e : enums) {
						if (str.equals(e.getValue().toString())) {
							return e;
						}
					}
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return null;
	}

	@Override
	public String convertToString(Map context, Object o) {
		System.out.println("入进转换器的convertToString方法......");
		return null != o && o instanceof IEnumConverter ? ((IEnumConverter) o).getText() : "";
	}

	public static void main(String[] args) {
		Object obj = new EnumCommonConverter().convertFromString(null, new String[] { "1" }, AreaType.class);
		System.out.println(obj);

	}
}


4.最后是在工程的src的目录下加入xwork-conversion.properties文件,

内容为:com.jungle.enums.IEnumConverter = com.jungle.enums.EnumCommonConverter



请求页面:

<!-- 枚举转换器 例子-->
			<%
				AreaType[] areas = AreaType.values();
				request.setAttribute("areas",areas);
			%>
			<s:form action="enum!execute.action" namespace="/">
				<s:select name="area" list="#request.areas" id="area"
					listKey="value" listValue="text">
				</s:select>
				<s:submit></s:submit>
			</s:form>

Action:

import com.jungle.enums.AreaType;
import com.opensymphony.xwork2.ActionSupport;

@Results(value = { @Result(name = "success", location = "/enum.jsp") })
public class EnumAction extends ActionSupport {
	private AreaType area;
	@Override
	public String execute() throws Exception {
		System.out.println("EnumAction.execute():" + area);
		return SUCCESS;
	}
	public AreaType getArea() {
		return area;
	}
	public void setArea(AreaType area) {
		this.area = area;
	}
}

结果页:

<s:property value="area.name"/>
<s:property value="area.text"/>
<s:property value="area.value"/>




转换器写得不是很完善,还需要改进,这篇文章只是想起到抛砖引玉的作用。

这里的Action使用了无配置的插件需要用到struts2-convention-plugin.jar可以查看我的另一篇文章:http://blog.csdn.net/cl61917380/article/details/7017745

这篇的重点是转换器。你也可以使用常规的方法访问.

分享到:
评论

相关推荐

    struts2 helloworld

    "Struts2 HelloWorld"是学习Struts2框架的基础教程,通过这个例子,我们可以了解Struts2的基本配置和工作流程。 首先,让我们从项目结构开始。在"struts2_helloWorld"压缩包中,通常会包含以下几个关键文件: 1. *...

    基于struts2的hello world输出

    其他依赖如`struts2-core-2.3.14.jar`,`xwork-core-2.3.14.jar`等,都是Struts2框架的核心组件,它们提供了动作调度、拦截器、类型转换、结果类型等核心功能。`javassist-3.11.0.GA.jar`用于动态类生成,`ognl-...

    Struts2入门使用案例HelloWorld

    "Struts2入门使用案例HelloWorld"是一个典型的教程,旨在帮助初学者快速理解并开始使用Struts2框架。下面我们将深入探讨这个案例涉及的关键知识点。 首先,我们需要创建一个Maven工程。Maven是Java项目管理和构建...

    struts2 类型转换器

    在Struts2中,类型转换器(Type Converter)是框架的一个关键特性,用于处理Action类中属性的自动类型转换。这个特性使得开发者无需手动进行数据类型之间的转换,从而提高了开发效率和代码的可读性。 标题中的...

    学Struts2从HelloWorld示例开始

    从“HelloWorld”示例开始学习Struts2是一个经典的入门方法,因为它能帮助我们理解框架的基本工作原理。 首先,我们需要创建一个展示信息的JSP文件,即`HelloWorld.jsp`。在这个文件中,我们使用Struts2的标签库,...

    Struts2入门之HelloWorld

    本篇文章将带你入门Struts2,通过创建一个简单的"HelloWorld"示例来理解其核心概念。 首先,了解Struts2框架的基本组成: 1. **Action类**:这是业务逻辑的入口点,处理用户请求并返回结果。在我们的"HelloWorld...

    struts2.0开发环境的搭建及HelloWorld的演示

    在MyEclipse中,选择“New”-&gt;“Dynamic Web Project”,并命名为`Struts2_HelloWorld`。创建项目后,需要导入Struts2所需的库文件。进入项目属性设置,选择“Java Build Path”-&gt;“Libraries”-&gt;“Add External ...

    Struts2架构简介(Helloworld)

    "Helloworld"是学习任何新框架时的经典入门示例,通过它我们可以了解Struts2的基本工作原理和配置。 首先,让我们深入了解Struts2的核心概念: 1. **Action类**:在Struts2中,业务逻辑通常被封装在Action类中。一...

    HelloWorld 基于struts2框架

    在这个案例中,我们聚焦于基于Struts2框架的“HelloWorld”应用。Struts2是一款强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发,为开发者提供了灵活的控制层结构。 首先,我们需要了解Struts2的...

    struts2的helloworld例子

    这个"struts2的helloworld例子"是为初学者准备的一个基础教程,旨在帮助理解Struts2框架的基本工作原理和配置过程。下面将详细阐述这个例子中的关键知识点。 首先,Struts2框架的核心是Action类,它是处理用户请求...

    struts2注册转换器

    4. **使用转换器**:一旦转换器注册成功,Struts2将在处理表单提交时自动调用该转换器,将字符串转换为日期对象。 通过这样的自定义转换器,我们可以确保Struts2能正确处理特定格式的日期输入,避免了因格式不匹配...

    Struts2的第一个实例helloworld

    在本例中,提供的“Struts2_HelloWorld”压缩包中应该包含了所有必要的库文件,确保项目能够正常运行。 接下来,创建一个简单的Action类。在Struts2中,Action类需要继承自`com.opensymphony.xwork2.ActionSupport`...

    Struts2 HelloWorld

    Struts2 HelloWorld 示例详解 Struts2 是一个开源的 MVC(Model-View-Controller)框架,用于构建基于Java的企业级Web应用程序。它继承了Struts1的优点并解决了其存在的问题,提供了更强大的功能和更好的性能。在...

    Struts2 Helloworld 源代码

    这个"Struts2 Helloworld 源代码"压缩包很可能是为了帮助初学者理解Struts2框架的基础工作原理和配置。 在Struts2的Helloworld示例中,我们通常会看到以下几个关键知识点: 1. **环境配置**:首先,你需要一个Java...

    用Maven构建Struts2的HelloWorld

    在本教程中,我们将深入探讨如何使用Maven来构建一个基本的Struts2 HelloWorld应用。 首先,我们需要确保已经安装了Java Development Kit (JDK) 和 Maven。JDK是Java编程的基础,而Maven则用于构建和管理项目。在...

    struts2_HelloWorld代码

    这个"struts2_HelloWorld代码"是初学者了解和学习Struts2的一个基础实践,它展示了如何使用Struts2框架创建一个简单的“Hello, World!”应用程序。 在Struts2中,`Action`类是核心组件,它负责处理用户请求。在这个...

    struts2 helloworld程序

    在这个"Struts2 HelloWorld"程序中,我们将深入理解Struts2的基本结构和配置,以及如何创建第一个简单的应用。 首先,让我们从环境搭建开始。为了运行Struts2的HelloWorld程序,你需要安装Java Development Kit ...

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

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

    Struts2之Hello World | #struts2

    这是Struts2的核心配置文件,我们将在这里定义Action和拦截器。添加如下配置: ```xml &lt;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ...

    Struts2 实例 HelloWorld

    ### Struts2 实例 HelloWorld 知识点解析 #### 一、概述 在学习Struts2框架时,通常会从最简单的“Hello World”实例开始。这种实例不仅可以帮助初学者快速上手,还能让大家对Struts2的工作原理有一个基本的理解。...

Global site tag (gtag.js) - Google Analytics