struts2中类型转换实例代码

Struts2中类型转换可以将String类型的参数转换为具体的对象类型,比如将字符串形式的日期转换为Date类型。下面是struts2中类型转换的实例代码:

1. 实现TypeConverter接口

public class DateConverter implements TypeConverter {

    @Override
    public Object convertValue(Map context, Object value, Class toType) {
        if (value == null || "".equals(value.toString().trim())) {
            return null;
        }
        if (toType == Date.class) {
            Date date = null;
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            try {
                date = sdf.parse((String) value);
            } catch (ParseException e) {
                e.printStackTrace();
            }
            return date;
        }
        return null;
    }

}

2. 在Struts配置文件中注册转换器

<bean type="com.xxx.DateConverter" name="dateConverter"></bean>

<constant name="struts.conversion.properties.file" value="classpath:converter.properties" />

<constant name="struts.conversion.date" value="dateConverter" />

在converter.properties配置文件中,添加转换器的类型和名称的映射关系:

java.util.Date=com.xxx.DateConverter

3. 在Action中使用类型转换器

public class UserAction extends ActionSupport {

    private Date birthday;

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public String execute() throws Exception {
        System.out.println(birthday);
        return SUCCESS;
    }

}

当页面提交参数birthday时,Struts2会自动调用类型转换器完成参数转换,然后将转换后的参数值设置到Action中的对应属性中。

示例:

  1. 将字符串形式的日期转换为Date类型:

在JSP页面中,定义一个文本框用于输入日期,在Action中定义一个Date类型的属性,然后可以直接在Action中获取到转换后的日期:

<s:textfield name="birthday" />
public class UserAction extends ActionSupport {

    private Date birthday;

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public String execute() throws Exception {
        System.out.println(birthday);
        return SUCCESS;
    }

}
  1. 将字符串形式的照片转换为byte[]类型:

在JSP页面中,定义一个文件上传框用于上传照片,在Action中定义一个byte[]类型的属性,然后可以在类型转换器中完成照片的转换:

<s:file name="photoFile" />
public class UserAction extends ActionSupport {

    private byte[] photo;

    public byte[] getPhoto() {
        return photo;
    }

    public void setPhoto(byte[] photo) {
        this.photo = photo;
    }

    @Override
    public String execute() throws Exception {
        System.out.println(photo);
        return SUCCESS;
    }

}
public class ByteArrConverter implements TypeConverter {

    @Override
    public Object convertValue(Map context, Object value, Class toType) {
        if (value == null || "".equals(value.toString().trim())) {
            return null;
        }
        if (toType == byte[].class) {
            File file = (File)value;
            FileInputStream fis = null;
            ByteArrayOutputStream bos = null;
            try {
                fis = new FileInputStream(file);
                bos = new ByteArrayOutputStream();
                byte[] buffer = new byte[1024];
                int len = -1;
                while ((len = fis.read(buffer)) != -1) {
                    bos.write(buffer, 0, len);
                }
                return bos.toByteArray();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                try {
                    if (fis != null) {
                        fis.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
                try {
                    if (bos != null) {
                        bos.close();
                    }
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return null;
    }

}
<bean type="com.xxx.ByteArrConverter" name="byteArrConverter"></bean>

<constant name="struts.conversion.properties.file" value="classpath:converter.properties" />

<constant name="struts.conversion.byte[]" value="byteArrConverter" />

在converter.properties配置文件中,添加转换器的类型和名称的映射关系:

byte[]=com.xxx.ByteArrConverter

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:struts2中类型转换实例代码 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • Java8加java10等于Java18的版本查看及特性详解

    Java8加Java10等于Java18的版本查看及特性详解 在本篇攻略中,我们会讲解如何通过一些简单的命令来查看Java版本,并介绍一些Java8和Java10的重要特性。同时,我们还会提到Java18这一版本是否真实存在的问题。 1. 查看Java版本 1.1 使用java -version命令 在命令行中键入java -version命令,可查看当前系…

    Java 2023年5月19日
    00
  • spring mvc 组合mybatis框架实例详解

    Spring MVC 搭配 MyBatis 框架实例详解 本文将针对如何使用 Spring MVC 框架搭配 MyBatis 框架展开讲解,包括环境搭建、配置,以及搭建一个简单的增删改查示例。 环境搭建 为了使用 Spring MVC 搭配 MyBatis 框架,我们需要先完成以下环境的搭建: JDK:需要 JDK 版本为 1.8 或以上; Maven:使用…

    Java 2023年6月16日
    00
  • 使用SpringBoot内置web服务器

    使用Spring Boot内置web服务器来快速搭建Web应用是非常方便的。下面是使用Spring Boot内置web服务器的完整攻略,包括配置步骤和示例说明。 配置步骤 创建一个Spring Boot应用。在pom.xml中添加以下依赖: <dependency> <groupId>org.springframework.boot&…

    Java 2023年6月2日
    00
  • java(jdk)环境变量配置(XP、win7、win8)图文教程详解

    关于Java环境变量配置的详细攻略,我将为你提供如下步骤: 1. 下载安装JDK(Java Development Kit) 在安装JDK之前,请确认已经下载了适合你操作系统版本的JDK安装程序。可以在Oracle官网上下载最新版的JDK。 安装过程就是一般的软件安装过程,按照提示一步步操作即可。 2. 配置JAVA_HOME环境变量 安装完JDK后,我们需…

    Java 2023年5月24日
    00
  • java 中Map详解及实例代码

    下面是完整的“java 中Map详解及实例代码”攻略。 什么是Map? Map是一种用来存储键-值对数据的数据结构,常用于数据缓存、数据筛选等场景。 Map是一种抽象的数据类型,Java中通过接口Map来定义Map类型。Map接口的实现类有:HashMap、TreeMap、LinkedHashMap 等。 HashMap 什么是HashMap HashMap…

    Java 2023年5月23日
    00
  • 详解Java如何在Array和List之间进行转换

    让我来详细讲解“详解Java如何在Array和List之间进行转换”的攻略。 标准语法 在Java中,可以通过标准语法将Array转换为List,或将List转换为Array。 将Array转换为List // 假设我们有一个字符串数组 String[] array = new String[]{"apple", "banana…

    Java 2023年5月26日
    00
  • jsp 不支持EL表达式,解决办法

    针对“jsp不支持EL表达式,解决办法”的问题,整理了如下的完整攻略: 问题描述 JSP是一种Java Web应用程序的开发技术,使用JSP可以更方便地与HTML, CSS, JavaScript等前端技术协同开发;而EL表达式是JSP页面中经常使用的一种表达式语言,但是有时候我们会发现jsp页面不支持EL表达式,例如EL表达式的语法无法正确解析,页面中无法…

    Java 2023年6月15日
    00
  • JAVA十大排序算法之计数排序详解

    JAVA十大排序算法之计数排序详解 计数排序概述 计数排序是一种非比较排序算法,它的时间复杂度为O(n+k),其中k是整数的范围。和桶排序一样,计数排序假设输入的数组中元素是平均分布的,但它不适用于元素范围过大的情况。 计数排序算法的思想:对于给定的一组数据,统计出小于等于这组数据中每个数的个数,利用这个统计信息,直接将每个元素放到它在输出数组中的位置上,从…

    Java 2023年5月19日
    00
合作推广
合作推广
分享本页
返回顶部