亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

深入解析@InitBinder注解的功能與應用

 更新時間:2023年10月10日 09:43:56   作者:LY破曉  
這篇文章主要介紹了深入解析@InitBinder注解的功能與應用,從字面意思可以看出這個的作用是給Binder做初始化的,被此注解的方法可以對WebDataBinder初始化,webDataBinder是用于表單到方法的數據綁定的,需要的朋友可以參考下

一、注解作用

從字面意思可以看出這個的作用是給Binder做初始化的,被此注解的方法可以對WebDataBinder初始化。webDataBinder是用于表單到方法的數據綁定的! @InitBinder只在@Controller中注解方法來為這個控制器注冊一個綁定器初始化方法,方法只對本控制器有效。

二、代碼演示

1.對數據綁定進行設置

WebDataBinder中有很多方法可以對數據綁定進行具體的設置:比如我們設置name屬性為非綁定屬性(也可以設置綁定值setAllowedFields):

在Controller中添加一個方法:

     @InitBinder
        public void initBinder(WebDataBinder binder) {
            binder.setDisallowedFields("name");
        }

然后運行:

在這里插入圖片描述

添加:

在這里插入圖片描述

看后面那個name值就沒有綁定成功!

(具體作用視頻舉了個例子來闡述其某個作用:比如表單中有多選按鈕,對應的是JaveBean中的一個集合屬性,然而選擇的是id,而集合保存的確實類,這里我們就不能任SpringMVC自動綁定,需要我們手動綁定,所以就關閉其的自動綁定,不然會報錯?。?/p>

2.注冊已有的編輯器

WebDataBinder是用來綁定請求參數到指定的屬性編輯器.由于前臺傳到controller里的值是String類型的,當往Model里Set這個值的時候,如果set的這個屬性是個對象,Spring就會去找到對應的editor進行轉換,然后再set進去!Spring自己提供了大量的實現類(如下圖所示的在org.springframwork.beans.propertyEditors下的所有editor),諸如CustomDateEditor ,CustomBooleanEditor,CustomNumberEditor等許多,基本上夠用。 在平時使用SpringMVC時,會碰到javabean中有Date類型參數,表單中傳來代表日期的字符串轉化為日期類型,SpringMVC默認不支持這種類型的轉換。我們就需要手動設置時間格式并在webDateBinder上注冊這個編輯器!

在這里插入圖片描述

實現代碼

現在在student類中加上一個類型為Date的birth屬性、setter和getter,新增帶有birth所有屬性的構造函數。(代碼略)

list.jsp(所有學生信息頁面)加一列顯示生日的:${stu.birth}

input.jsp(添加信息界面):

    <br>
    birth(format=yyyy-mm-dd):<form:input path="birth"/>
    <br>

然后再控制器中該掉之前的@InitBinder代碼:

        @InitBinder
        public void initBinder(WebDataBinder binder) {
            //binder.setDisallowedFields("name");
            CustomDateEditor editor = new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true);
            binder.registerCustomEditor(Date.class, editor);
        }
        //編輯器構造函數
        public CustomDateEditor(DateFormat dateFormat, boolean allowEmpty) 
    //注冊編輯器函數
    public void registerCustomEditor(Class<?> requiredType, PropertyEditor propertyEditor)

然后運行

在這里插入圖片描述

添加成功

3.注冊自定義編輯器

使用自定義編輯器就是在第二個的基礎上添加個自定義編輯器就行了,自定義的編輯器類需要繼承

  • org.springframework.beans.propertyeditors.PropertiesEditor;

并重寫其setAsText和getAsText兩個方法就行了!

比如下面這個DoubleEditor:

    public class DoubleEditor extends PropertyEditorSupport {
        @Override
        public void setAsText(String text) throws IllegalArgumentException {
            if (text == null || text.equals("")) {
                text = "0";
            }
            setValue(Double.parseDouble(text));
        }
        @Override
        public String getAsText() {
            return getValue().toString();
        }
    }

然后在InitBinder方法中注冊就行。

4.設置屬性的前綴可以實現參數綁定

代碼所示:

jsp:
    <form action="/testBean" method="post">
        name: <input type="text" name="u.name"> <br>
        age: <input type="text" name="u.age"> <br>
        name: <input type="text" name="s.name"> <br>
        age: <input type="text" name="s.age"> <br>
        <input type="submit">
    </form>

controller:

      @InitBinder("user")
        public void init1(WebDataBinder binder) {
            binder.setFieldDefaultPrefix("u.");
        }
        @InitBinder("stu")
        public void init2(WebDataBinder binder) {
            binder.setFieldDefaultPrefix("s.");
        }
        @RequestMapping("/testBean")
        public ModelAndView testBean(User user, @ModelAttribute("stu") Student stu) {
            System.out.println(stu);
            System.out.println(user);
            String viewName = "success";
            ModelAndView modelAndView = new ModelAndView(viewName);
            modelAndView.addObject("user", user);
            modelAndView.addObject("student", stu);
            return modelAndView;
        }

@InitBinder(“user”)括號內的參數為類的首字母小寫(默認命名規(guī)則),也可以用@ModelAttribute(“stu”)做限定.

到此這篇關于深入解析@InitBinder注解的功能與應用的文章就介紹到這了,更多相關@InitBinder注解內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringBoot中讀取jar包中的resources目錄下的文件的三種方式

    SpringBoot中讀取jar包中的resources目錄下的文件的三種方式

    這篇文章給大家總結了SpringBoot讀取 jar 包中的 resources 目錄下的文件的三種方式,文中有詳細的代碼示例供大家參考,,需要的朋友可以參考下
    2023-06-06
  • spring boot項目application.properties文件存放及使用介紹

    spring boot項目application.properties文件存放及使用介紹

    這篇文章主要介紹了spring boot項目application.properties文件存放及使用介紹,我們的application.properties文件中會有很多敏感信息,大家在使用過程中要多加小心
    2021-06-06
  • Spring boot配置文件加解密詳解

    Spring boot配置文件加解密詳解

    這篇文章主要給大家介紹了關于Spring boot配置文件加解密的相關資料,文中通過示例代碼以及圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-03-03
  • List集合中對數據實現多重規(guī)則進行排序的案例

    List集合中對數據實現多重規(guī)則進行排序的案例

    今天小編就為大家分享一篇關于List集合中對數據實現多重規(guī)則進行排序的案例,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Java中的枚舉enum詳細解讀

    Java中的枚舉enum詳細解讀

    這篇文章主要介紹了Java中的枚舉enum詳細解讀,當我們使用enum關鍵字開發(fā)一個枚舉類時,默認會繼承Enum類,而且是一個final類,當有多個枚舉對象時,使用逗號 ,隔開,最后一個用分號;結尾,需要的朋友可以參考下
    2024-01-01
  • 基于Java實現一個復雜關系表達式過濾器

    基于Java實現一個復雜關系表達式過濾器

    這篇文章主要為大家詳細介紹了如何基于Java實現一個復雜關系表達式過濾器。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2022-07-07
  • java實現服務器巡查的代碼

    java實現服務器巡查的代碼

    接到上級領導任務,需要實現一個這樣的需求,一大批服務器,需要檢查服務器能否ping通,ssh密碼是否正常,以及檢查服務器的cpu,內存,硬盤占用情況,下面通過java代碼實現服務器巡查功能,需要的朋友一起看看吧
    2021-12-12
  • Java中的List接口實現類解析

    Java中的List接口實現類解析

    這篇文章主要介紹了Java中的List接口實現類解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 使用Java實現通用樹形結構構建工具類

    使用Java實現通用樹形結構構建工具類

    這篇文章主要為大家詳細介紹了如何使用Java實現通用樹形結構構建工具類,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2025-03-03
  • Kryo序列化及反序列化用法示例

    Kryo序列化及反序列化用法示例

    這篇文章主要介紹了Kryo序列化及反序列化用法示例,小編覺得挺不錯的,這里分享給大家,需要的朋友可以參考下。
    2017-10-10

最新評論