原文鏈接http://zhhll.icu/2021/01/08/%E6%A1%86%E6%9E%B6/springmvc/%E6%95%B0%E6%8D%AE%E7%BB%91%E5%AE%9A/
資料系結
資料系結流程
- springmvc框架將ServletRequest物件及目標方法的入參實體傳遞給WebDataBinderFactory實體,以創建DataBinder實體物件
- DataBinder呼叫裝配在springmvc背景關系中的ConversionService組件進行資料型別轉換、資料格式化作業,將Servlet中的請求資訊填充到入參物件中
- 呼叫Vaildator組件對已經系結了請求訊息的入參物件進行資料合法性檢驗,并最終生成資料系結結果BindingData物件
- springmvc抽取BindingResult中的入參物件和校驗錯誤物件,將他們賦給處理方法的回應入參
自定義型別轉換器
可通過ConversionServiceFactoryBean的converters屬性注冊自定義的型別轉換器
可以使用三種方式實作自定義型別轉換器
-
實作Converter<S, T>介面
public interface Converter<S, T> { // 將S型別轉為T型別 T convert(S var1); }
實作Converter<S, T>介面
@Component
public class UserConverter implements Converter<String, User> {
@Override
public User convert(String s) {
// 規則為每個欄位使用:分隔,如果欄位為null,將null拼入串中(規則可以與前端定 這里就舉個例子)
if(s != null && !"".equals(s)){
String[] values = s.split(":");
if(values != null && values.length > 0){
User user = new User();
if("null".equals(values[0])){
user.setId(0);
} else {
user.setId(Integer.parseInt(values[0]));
}
if("null".equals(values[1])){
user.setName("");
} else {
user.setName(values[1]);
}
return user;
}
}
return null;
}
}
<!-- 配置自定義型別轉換器 -->
<bean id="conversionService" >
<property name="converters">
<list>
<ref bean="userConverter"/>
</list>
</property>
</bean>
<mvc:annotation-driven conversion-service="conversionService"/>
@RequestMapping("/testConverter")
public String testConverter(User user){
System.out.println(user);
return "hello";
}
由于本身的博客百度沒有收錄,博客地址http://zhhll.icu
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/266574.html
標籤:Java
上一篇:Java并發編程之執行緒的創建
