首页 > 代码库 > struts2基础---->自定义类型转换器

struts2基础---->自定义类型转换器

  这一章,我们开始struts2中自定义类型转换器的学习。

自定义类型转换器

技术分享

一、定义一个继承于StrutsTypeConverter的转换类:

package com.huhx.converter;import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.util.Map;import org.apache.struts2.util.StrutsTypeConverter;public class DateConverter extends StrutsTypeConverter {    private final DateFormat[] dateFormats = {            new SimpleDateFormat("yyyy年MM月dd日"),            new SimpleDateFormat("yyyyMM/dd")    };        @Override    public Object convertFromString(Map context, String[] values, Class toClass) {        String dateStr = values[0];        for(int i = 0; i < dateFormats.length; i++) {            try {                return dateFormats[i].parse(dateStr);            } catch (ParseException e) {                e.printStackTrace();            }        }        return null;    }    @Override    public String convertToString(Map context, Object object) {        Date date = (Date)object;        return new SimpleDateFormat("yyyy-MM-dd").format(date);    }}

 二、在src下面定义一个properties文件,名为xwork-conversion.properties。struts2提供了两种方式来配置转换器

  • 应用于全局范围的类型转换器,在src下面创建一个xwork-conversion.properties,其内容为:转换类全名=类型转换器类全名
  • 应用于特定类的类型转换器,需要在特定类的相同目录下创建一个名为ClassName-conversion.properties的属性文件,其内容为:特定类的属性名=类型转换器类全名
java.util.Date=com.huhx.converter.DateConverter

 三、增加一个输入时间的jsp,名为converter.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body>    <form action="hello.action" method="post">        date: <input type="text" name="date">        <input type="submit" value="submit">            </form></body></html>

 四、修改结果页的huhx.jsp为:

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%><%@taglib prefix="s" uri="/struts-tags" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><title>Insert title here</title></head><body>    <h2>Hello huhx.</h2>    date: <s:property value="date"/></body></html>

五、在Action中,接收date数据,增加以下内容:

private Date date;public Date getDate() {    return date;}public void setDate(Date date) {    this.date = date;}

 六、运行效果如下:

技术分享

友情链接

 

struts2基础---->自定义类型转换器