數據綁定

原文連接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屬性註冊自定義的類型轉換器java

能夠使用三種方式實現自定義類型轉換器spring

  • 實現Converter<S, T>接口mvc

    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" class="org.springframework.context.support.ConversionServiceFactoryBean">
    <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.icuapp

相關文章
相關標籤/搜索