全屏浏览
缩小浏览
回到页首

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;
}

 六、运行效果如下:

友情链接

 

posted @ 2017-01-18 15:02  huhx  阅读(454)  评论(0编辑  收藏  举报