歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Struts2自定義日期轉換器

Struts2自定義日期轉換器

日期:2017/3/1 10:04:16   编辑:Linux編程

1. 日期格式轉換器

自定義日期格式轉換器,可以動態調整日期格式,並更新到數據庫。

/**
* 保存日期格式的基礎類。
*
* @author daichen
*
*/
public class DateConverter extends StrutsTypeConverter {

/**
* 內存中的日期格式
*/
private String format;

/**
* 可以從數據庫中加載日期格式
*/
@PostConstruct
public void loadFormat() {
format = "yyyy-MM-dd";
}

@SuppressWarnings("rawtypes")
@Override
public Object convertFromString(Map context,String[] values, Class toClass) {
// Pre-validate
if (ArrayUtils.isEmpty(values) ||StringUtils.isEmpty(values[0])) {
return null;
}

Date date = null;
try {
date = new SimpleDateFormat(format).parse(values[0]);
} catch (ParseException e) {
date = null;
}
return date;
}

@SuppressWarnings("rawtypes")
@Override
public String convertToString(Map context, Objecto) {
if (o instanceof Date) {
return new SimpleDateFormat(format).format((Date) o);
}
return StringUtils.EMPTY;
}

/**
* 更改日期格式(可以同時更新到數據庫)
* @param format
*/
public void changeFormat(String format) {
this.format = format;
}
}

2. 全局配置文件

新建xwork-conversion.properties,並與struts.xml放在一起。此配置文件中定義的轉換器是全局的,也可以定義一個指定Action的轉換器。

java.util.Date=com.cdai.ssh.common.DateConverter

3. JSP頁面

<%@page
import="com.cdai.ssh.user.vo.*"
contentType="text/html;charset=utf-8"
%>
<%@taglib prefix="s"uri="/struts-tags"%>

<html>

<head>
<title>Programmer inSY</title>
</head>

<body>

<s:iterator value="userList">
<li>
<s:property value="createdTime"/>
</li>
<p>
<s:property value="id"/>
</p>
</s:iterator>

</body>

</html>

4. 未解決問題

4.1 配置文件位置

struts.xml和xwork-conversion.properties要放在一起,但是不放在classes根位置就會報錯。

4.2 兼容Velocity

Velocity不支持Struts2的自定義轉換器。

Copyright © Linux教程網 All Rights Reserved