1.SpringMVC文字列から日付形式への変換
SpringMVCは、ページ上の日付文字列(2020-10-14および2020/10/14と同様)のバックグラウンド日付への変換をサポートしていません。
1.1注釈を介して@DateTimeFormat()
日付形式の変換を実現します。【***推奨用途】
注釈日付タイプコンバーター(日付形式に変換する必要があるメモをDate属性に追加します):@DateTimeFormat("需要转换的格式")
出生日期<input type="date" name="birthday"/><br/>
public User{
private int id;
private String username;
private double password;
//注解将yyyy-MM-dd的形式转换为Date数据,具体什么格式要看传入参数格式,就是发送请求,查看请求参数的表单数据,看birthday数据的格式
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
}
リクエストヘッダーを確認
yyyy-MM-dd
し、リクエスト情報に応じて、受信日の形式が形式であることを確認します。
1.2カスタムコンバーターの実装を作成し、Converter
メソッドを書き換えて型変換を実行します。
1.2.1Converter
インターフェースを実装するためのカスタムコンバーターを作成する
import org.springframework.core.convert.converter.Converter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/*自定义类型参数转换器: 将字符串日期格式转成Date类型的数据.
Converter<S,T> S: 代表的是源,将要转换的数据类型 T:目标类型,将会转成什么数据类型
*/
//日期格式转换器
public class DateFormatConverter implements Converter<String,Date>{
//转换方法
//String source 将会传递过来的日期的字符串
public Date convert(String source) {
//参数填写为你想要转换的数据格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(source);
return date;
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
1.2.2 springmvc.xmlで変換ファクトリを構成し、コンバーターをコンバーターコレクションに設定します
<bean id="formattingConversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean">
<property name="converters">
<set>
<bean id="dateFormatConverter" class="com.itheima.converter.DateTimeFormatConverter"></bean>
</set>
</property>
</bean>
1.2.3変換ファクトリオブジェクトをプロセッサアダプタにマウントします(springmvc.xml
)
<!-- 这个service的值要和你创建的转换器的bean的id一致 -->
<mvc:annotation-driven conversion-service="formattingConversionService"/>
2. SpringMVC日付フォーマットタグ、日付から指定されたフォーマット変換(jspで使用)
2.1jstl依存関係が必要
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
2.2jspページにタグをインポートする
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
2.3呼び出し日フォーマットfmt
タグラベル(設定したプレフィックスをインポート)
<fmt:formatDate value="${User.birthday}" pattern="yyyy-MM-dd-"/>
このように、バックエンドで渡す日付データ形式はyyyy-MM-dd形式です。
2.4バックグラウンドで日付に@DateTimeFormat(pattern = "yyyy-MM-dd")
コメントを追加するだけです
//这个pattern需要和你传入的数据格式一致
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthDay;