我是Spring MVC的新手,我刚刚遇到了Spring Custom Formatters。所以我试图为java.util.Date创建一个自定义格式化程序。
MyDateFormatter.java
public class MyDateFormatter implements Formatter<Date>{
private String pattern = "yyyyMMdd";
@Override
public String print(Date date, Locale locale) {
if (date == null) {
return "";
}
return getDateFormat(locale).format(date);
}
@Override
public Date parse(String formatted, Locale locale) throws ParseException {
if (formatted.length() == 0) {
return null;
}
return getDateFormat(locale).parse(formatted);
}
protected DateFormat getDateFormat(Locale locale) {
DateFormat dateFormat = new SimpleDateFormat(this.pattern, locale);
dateFormat.setLenient(false);
return dateFormat;
}
}
TestFormatterController.java
@Controller
public class TestFormatterController {
@RequestMapping(value="/testFormatter")
public String getDate(ModelMap map){
Date date = new Date();
map.put("date", date);
return "testFormatter";
}
}
testFormatter.jsp
<h1>${date}<h1>
配置
<bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="formatters">
<set>
<bean class="mypackge.MyDateFormatter">
</set>
</property>
</bean>
输出不是yyyyMMdd。你能告诉我我错过了什么吗?
答案 0 :(得分:2)
当我们直接打印像$ {date}这样的对象时,Spring不会调用格式化程序,我们必须使用<spring:eval>
。我将JSP更改为以下内容,现在它按预期工作:
<%@ include file="/WEB-INF/jsp/common/taglibs.jsp"%>
<spring:eval expression="date" />
答案 1 :(得分:0)
试试这种方式
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<fmt:formatDate pattern="yyyy-MM-dd" value="${now}" />