一、使用内置的注解进行字段级别的解析/格式化:
1、在模型类字段级别添加@NumberFormat、@DateTimeFormat等内置注解:
public class FormatterModel {
@NumberFormat(style=Style.NUMBER, pattern="#,###")
private int totalCount;
@NumberFormat(style=Style.PERCENT)
private double discount;
@NumberFormat(style=Style.CURRENCY)
private double sumMoney;
@DateTimeFormat(iso=ISO.DATE)
private Date registerDate;
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
private Date orderDate;
//省略getter/setter
}
2、解析/格式化验证:
FormatterController类:
@Controller
public class FormatterController {
@RequestMapping("/formatter/hello")
public String formatter(@ModelAttribute("model")FormatterModel model) {
model.setTotalCount(10000);
model.setDiscount(0.51);
model.setSumMoney(10000.13);
model.setRegisterDate(new Date(2013-1900, 4, 1));
model.setOrderDate(new Date(2013-1900, 4, 1, 20, 18, 18));
return "formatter";
}
}
fomatter.jsp:
<%@ page language= "java" contentType= "text/html; charset=UTF-8" pageEncoding= "UTF-8"%>
<%@taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<%@taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
totalCount:<spring:bind path="model.totalCount">${status.value}</spring:bind><br/>
discount:<spring:bind path="model.discount">${status.value}</spring:bind><br/>
sumMoney:<spring:bind path="model.sumMoney">${status.value}</spring:bind><br/>
registerDate:<spring:bind path="model.registerDate">${status.value}</spring:bind><br/>
orderDate:<spring:bind path="model.orderDate">${status.value}</spring:bind><br/>
<br/><br/>
<form:form commandName="model">
<form:input path="sumMoney"/>
</form:form>
使用http://localhost:8080/formatter/hello访问可看到格式化后的结果。
二、功能处理方法参数级别的数据解析:
@Controller
public class FormatterController2 {
@RequestMapping("/formatter/hello2")
public String formatter(@DateTimeFormat(pattern="yyyy-MM-dd") @RequestParam("date") Date date) {
System.out.println(date);
return "success";
}
}
访问地址:http://localhost:8080/formatter/hello2?date=2012-12-10