struts2中类型转换实例代码

yizhihongxing

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日

相关文章

  • 基于Java实现五子棋小游戏(附源码)

    针对“基于Java实现五子棋小游戏(附源码)”这篇文章,下面是我的完整攻略。 标题 文章的主标题是“基于Java实现五子棋小游戏(附源码)”,是直接说明文章要讲的内容,也可以吸引用户的注意力;副标题是“开发环境、实现思路、代码解析、附带完整源码”,更加详细地介绍了文章会涉及到的方面。 代码块 代码块非常重要,而本文中五子棋小游戏的源码也是必不可少的一部分。文…

    Java 2023年5月26日
    00
  • 解读springboot配置mybatis的sql执行超时时间(mysql)

    Sure! 解读 Spring Boot 配置 MyBatis 的 SQL 执行超时时间 (MySQL) 背景 在使用 Spring Boot 框架开发 Web 项目时,使用 MyBatis 作为数据访问层的解决方案,往往会遇到 SQL 查询语句执行过长的情况。为了防止 SQL 执行超时,我们可以通过配置 MyBatis 的执行超时时间来解决。 步骤 以下是…

    Java 2023年5月20日
    00
  • Java实现二维码生成的代码方法

    Java实现二维码生成的代码方法可以通过使用第三方库来实现,比如zxing和google的qrcode。下面我们来分别介绍两种库的使用方法以及两个示例。 zxing库生成二维码的代码方法: 1.首先,需要在项目中引入zxing的Maven依赖: <dependency> <groupId>com.google.zxing</gr…

    Java 2023年5月23日
    00
  • 14个编写Spring MVC控制器的实用小技巧(吐血整理)

    下面是对“14个编写Spring MVC控制器的实用小技巧(吐血整理)”的完整攻略: 1. 引入必要的依赖 在开始编写Spring MVC控制器之前,我们需要在项目中引入Spring MVC相关的依赖。通常情况下,我们需要在pom.xml文件中引入以下依赖: <dependencies> <dependency> <groupI…

    Java 2023年5月16日
    00
  • 使用HtmlAgilityPack XPath 表达式抓取博客园数据的实现代码

    实现代码使用 HtmlAgilityPack 库 和 XPath 表达式抓取博客园数据。步骤如下: 1. 安装HtmlAgilityPack库 在Visual Studio中,右键解决方案,选择”管理NuGet程序包”,在搜索框中输入”HtmlAgilityPack”,安装最新版本。 2. 加载页面并获取HTML代码 使用WebClient实例获取博客园页面…

    Java 2023年5月31日
    00
  • 详解JDK自带javap命令反编译class文件和Jad反编译class文件(推荐使用jad)

    详解JDK自带javap命令反编译class文件和Jad反编译class文件 什么是javap命令和Jad反编译? javap命令是JDK自带的反编译工具,用于反编译class文件。 Jad是一款免费的Java反编译器,可以将class文件反编译为Java源代码。 使用javap命令反编译class文件 打开命令行工具,进入.class文件所在的目录。 键入…

    Java 2023年5月19日
    00
  • IDEA 中使用 ECJ 编译出现 java.lang.IllegalArgumentException的错误问题

    首先,我们需要了解什么是ECJ。ECJ(Eclipse Compiler for Java)是一款基于Eclipse平台的Java编译器,它可以用于将Java代码编译成字节码。而IDEA是一款广受欢迎的Java开发工具,它可以集成ECJ编译器,来编译Java代码。如果在IDEA中使用ECJ编译出现了java.lang.IllegalArgumentExcep…

    Java 2023年5月26日
    00
  • Java常用测试工具大全

    Java常用测试工具大全 在Java开发中,测试是至关重要的环节,常用的测试工具有很多,包括单元测试、接口测试、性能测试等等。本文将介绍Java常用测试工具大全,并给出相应的使用示例。 单元测试工具 JUnit JUnit是Java最流行的单元测试框架,它能够进行简单、灵活、可重复的测试,并且提供丰富的断言和注释。以下是使用JUnit的示例代码: impor…

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