文章目录
1、综述
在前面的各种演示案例中,表单提交的无论是int还是double类型的请求参数,用于处理该请求的处理器方法的形参,均可直接接收到相应类型的相应数据,而非接收到String再手动转换。那是因为在Spring MVC框架中,有默认的类型转换器。这些默认的类型转换器,可以将String类型的数据,自动转换为相应类型的数据。
但默认转换器并不是可以将用户提交的String转换为所有用户需要的类型。此时,就需要自定义类型转换器了。
例如,在Spring MVC的默认类型转换器中,没有日期类型的转换器,因为日期的格式太多。若要使表单中提交的日期字符串,被处理器方法形参直接接收为java.util.Date,则需要自定义类型转换器了。
2、搭建测试环境
本案例完成一个自定义的日期类型的类型转换器。由于在之前的系列文章中已经多次提到如何搭建一个Spring MVC的演示项目开发环境,因此这里不再赘述,直接从修改前台JSP页面开始。详细的如何搭建Spring MVC环境请查看系列文章(Spring MVC使用篇(二)—— 环境搭建)。
首先,将model下的UserController文件进行修改,对原本的User对象模型增加名为“loginDate”的属性,含义为用户的注册日期。具体修改的代码如下:
package com.ccff.model;
import java.util.Date;
public class User {
private int userId;
private String username;
private String password;
private Date loginDate;
public Date getLoginDate() {
return loginDate;
}
public void setLoginDate(Date loginDate) {
this.loginDate = loginDate;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
其次,在jsp/user文件夹中新建名为“convertTest.jsp”的JSP页面,具体代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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>convertTest</title>
</head>
<body>
<h3>用户注册</h3>
<form action="doConvertTest.action" method="post">
<table width="300px;" border=1>
<tr>
<td>用户编号:</td>
<td><input type="text" name="userId" id="userId" /></td>
</tr>
<tr>
<td>用户名:</td>
<td><input type="text" name="username" id="username" /></td>
</tr>
<tr>
<td>密 码:</td>
<td><input type="password" name=