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;
- }
-
-
-
-
-
-
-
- public static AreaType getByOrdinal(Integer ordinal) {
- if (null != ordinal) {
- for (AreaType t : AreaType.values()) {
- if (t.ordinal() == ordinal) {
- return t;
- }
- }
- }
- return null;
- }
- }
2.接口,让枚举实现这个接口,达到所有的枚举都可以转换的效果
-
-
-
-
-
- public interface IEnumConverter {
-
-
-
- Integer getOrdinal();
-
-
-
-
- String getName();
-
- String getText();
-
- Integer getValue();
- }
3.枚举转换器,继承StrutsTypeConverter类
-
-
-
-
-
- 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);
- 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"/>
分享到:
相关推荐
在这个“struts2枚举值、日期值转换示例”中,我们将关注如何自定义枚举值和日期值的转换器。 首先,枚举(Enum)在Java中是一种特殊的类,用于表示有限集合中的固定数量的值。在Struts2中,如果Action类的属性是...
在Struts2框架中,自定义类型转换器是开发者为了满足特定需求,对框架默认的类型转换机制进行扩展的一种方式。Struts2允许我们创建自己的转换器类来处理输入数据,确保模型对象的属性能够正确地被转换为预期的数据...
自定义转换器需要实现`org.apache.struts2.util.FieldConverter`接口或者继承`org.apache.struts2.convention.converters.ConversionAwareConverter`抽象类。创建好转换器后,将其注册到Struts配置中,即可在需要的...
自定义类型转换器需要实现`org.apache.struts2.util.TypeConverter`接口,或者继承`org.apache.struts2.convention.converters.DefaultConversionProvider`基类,覆盖`convertValue()`方法。然后,通过在Action类或...
1. **默认类型转换**:Struts2有一套默认的类型转换器,可以处理基本类型(如int、String、Date等)以及一些常用类型。例如,如果表单字段是字符串,而Action类中的字段是整型,Struts2会自动将字符串转换为整型。 ...
枚举的自定义转换器主要是为了在不同数据格式之间进行枚举的转换,例如将枚举值转换为字符串、整数或其他类型,以便于存储和传输。在Java中,我们可以通过实现`java.beans.PropertyEditorSupport`接口来自定义转换器...
开发者只需实现`org.apache.struts2.conversion.Converter`接口,然后通过配置注册这个转换器,即可让Struts2在处理特定类型时使用自定义的转换逻辑。 在转换过程中,如果出现任何异常,Struts2的`conversionError`...
Struts2的JavaDoc文档包含了2.09版本的所有公开API接口、类、枚举、注解和方法的详细说明,是开发者了解和学习Struts2框架的重要参考资料。`struts-2.0.9-core.chm`文件是Struts2核心组件的JavaDoc,涵盖了框架的...
这些JAR文件包含了类库、接口、枚举、注解和其他必要的组件,使得开发者能够利用Struts2的功能,如动作调度、结果映射、拦截器、插件等。 "struts-2.3.24-lib"这个压缩包很可能包含了Struts2版本2.3.24所需的全部...
6. **commons-lang3-3.2.jar**:Apache Commons Lang是提供了一些Java语言功能扩展的库,如字符串处理、日期/时间操作、枚举处理等,对Struts2的日常开发提供了便利。 7. **commons-io-2.2.jar**:Apache Commons ...
然后,在Struts2的配置文件或Action类中,你可以指定这个转换器应用于哪些类型或字段。 此外,Struts2的`ValueStack`也会使用TypeConverter来处理Action类属性的设置。当Action实例化后,ValueStack会遍历请求参数...
Struts2单选按钮详解及枚举类型的转换代码示例 Struts2单选按钮是Web应用程序中常用的UI组件之一,它允许...通过使用Struts2单选按钮和类型转换器,我们可以轻松地实现枚举类型的转换,并提高Web应用程序的开发效率。
2. **枚举**:Struts2中的Action和Result类型通常使用枚举表示,但在JDK1.4中,需要使用常量类来模拟枚举的行为。 3. **注解**:Struts2利用注解简化配置,但在JDK1.4中,需要依赖XML配置文件来定义Action、结果和...
2. **类型转换**:为了确保传入的字符串能够正确地转换为所需的Java对象类型,Struts2提供了内置的类型转换器,并允许用户自定义类型转换逻辑。这一步骤对于确保应用程序的安全性和数据完整性至关重要。 接下来,...
Struts2内建了一套类型转换器,可以处理常见的数据类型转换: 1. **String**:可以将int、long、double、boolean、String数组转换为字符串。 2. **boolean/Boolean**:支持字符串到布尔值的相互转换。 3. **char/...
【课程大纲】 Java基础 1.java入门知识 Java基础 10.枚举与泛型 Java基础 11....Java基础 12....Java基础 13....Java基础 14....struts2_10_转换器 struts2_11_插件 struts2_2_Action详解 struts2_3_配置参数详解