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框架的基础教程,通过这个例子,我们可以了解Struts2的基本配置和工作流程。 首先,让我们从项目结构开始。在"struts2_helloWorld"压缩包中,通常会包含以下几个关键文件: 1. *...
其他依赖如`struts2-core-2.3.14.jar`,`xwork-core-2.3.14.jar`等,都是Struts2框架的核心组件,它们提供了动作调度、拦截器、类型转换、结果类型等核心功能。`javassist-3.11.0.GA.jar`用于动态类生成,`ognl-...
"Struts2入门使用案例HelloWorld"是一个典型的教程,旨在帮助初学者快速理解并开始使用Struts2框架。下面我们将深入探讨这个案例涉及的关键知识点。 首先,我们需要创建一个Maven工程。Maven是Java项目管理和构建...
在Struts2中,类型转换器(Type Converter)是框架的一个关键特性,用于处理Action类中属性的自动类型转换。这个特性使得开发者无需手动进行数据类型之间的转换,从而提高了开发效率和代码的可读性。 标题中的...
从“HelloWorld”示例开始学习Struts2是一个经典的入门方法,因为它能帮助我们理解框架的基本工作原理。 首先,我们需要创建一个展示信息的JSP文件,即`HelloWorld.jsp`。在这个文件中,我们使用Struts2的标签库,...
本篇文章将带你入门Struts2,通过创建一个简单的"HelloWorld"示例来理解其核心概念。 首先,了解Struts2框架的基本组成: 1. **Action类**:这是业务逻辑的入口点,处理用户请求并返回结果。在我们的"HelloWorld...
在MyEclipse中,选择“New”->“Dynamic Web Project”,并命名为`Struts2_HelloWorld`。创建项目后,需要导入Struts2所需的库文件。进入项目属性设置,选择“Java Build Path”->“Libraries”->“Add External ...
"Helloworld"是学习任何新框架时的经典入门示例,通过它我们可以了解Struts2的基本工作原理和配置。 首先,让我们深入了解Struts2的核心概念: 1. **Action类**:在Struts2中,业务逻辑通常被封装在Action类中。一...
在这个案例中,我们聚焦于基于Struts2框架的“HelloWorld”应用。Struts2是一款强大的MVC(Model-View-Controller)框架,广泛应用于Java Web开发,为开发者提供了灵活的控制层结构。 首先,我们需要了解Struts2的...
这个"struts2的helloworld例子"是为初学者准备的一个基础教程,旨在帮助理解Struts2框架的基本工作原理和配置过程。下面将详细阐述这个例子中的关键知识点。 首先,Struts2框架的核心是Action类,它是处理用户请求...
4. **使用转换器**:一旦转换器注册成功,Struts2将在处理表单提交时自动调用该转换器,将字符串转换为日期对象。 通过这样的自定义转换器,我们可以确保Struts2能正确处理特定格式的日期输入,避免了因格式不匹配...
在本例中,提供的“Struts2_HelloWorld”压缩包中应该包含了所有必要的库文件,确保项目能够正常运行。 接下来,创建一个简单的Action类。在Struts2中,Action类需要继承自`com.opensymphony.xwork2.ActionSupport`...
Struts2 HelloWorld 示例详解 Struts2 是一个开源的 MVC(Model-View-Controller)框架,用于构建基于Java的企业级Web应用程序。它继承了Struts1的优点并解决了其存在的问题,提供了更强大的功能和更好的性能。在...
这个"Struts2 Helloworld 源代码"压缩包很可能是为了帮助初学者理解Struts2框架的基础工作原理和配置。 在Struts2的Helloworld示例中,我们通常会看到以下几个关键知识点: 1. **环境配置**:首先,你需要一个Java...
在本教程中,我们将深入探讨如何使用Maven来构建一个基本的Struts2 HelloWorld应用。 首先,我们需要确保已经安装了Java Development Kit (JDK) 和 Maven。JDK是Java编程的基础,而Maven则用于构建和管理项目。在...
这个"struts2_HelloWorld代码"是初学者了解和学习Struts2的一个基础实践,它展示了如何使用Struts2框架创建一个简单的“Hello, World!”应用程序。 在Struts2中,`Action`类是核心组件,它负责处理用户请求。在这个...
在这个"Struts2 HelloWorld"程序中,我们将深入理解Struts2的基本结构和配置,以及如何创建第一个简单的应用。 首先,让我们从环境搭建开始。为了运行Struts2的HelloWorld程序,你需要安装Java Development Kit ...
在这个“struts2枚举值、日期值转换示例”中,我们将关注如何自定义枚举值和日期值的转换器。 首先,枚举(Enum)在Java中是一种特殊的类,用于表示有限集合中的固定数量的值。在Struts2中,如果Action类的属性是...
这是Struts2的核心配置文件,我们将在这里定义Action和拦截器。添加如下配置: ```xml <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ...
### Struts2 实例 HelloWorld 知识点解析 #### 一、概述 在学习Struts2框架时,通常会从最简单的“Hello World”实例开始。这种实例不仅可以帮助初学者快速上手,还能让大家对Struts2的工作原理有一个基本的理解。...