1. 程式人生 > >spring mvc 繫結物件 並進行校驗

spring mvc 繫結物件 並進行校驗

眾所周知,Spring Mvc可以對錶單裡傳到後臺的資料進行自動的封裝(前提是遵循一定的規則),現在可以將spring裡面的一些方法做一個合併,形成一個新的方法,使其達到接收並封裝表單資料、完成資料校驗、若有錯時返回錯誤原因等作用,現將程式碼貼出來,歡迎大家交流指正:

abstract public class BaseController extends MultiActionController {

       。。。。。。

 /**
     * 從Request中繫結物件並進行校驗. Spring MVC中的Bind函式未完全符合需求,因此參考原始碼進行了擴充套件
     *
     * @return 校驗錯誤
     */
    protected BindingResult bindObject(HttpServletRequest request, Object command) throws Exception {
        Assert.notNull(command);//這裡的command通常是實體物件
        // 建立Binder
        ServletRequestDataBinder binder = createBinder(request, command);
        // 回撥函式,供子類擴充套件對binder做出更進一步設定,並進行不能由binder自動完成的繫結,可忽略這一步
        preBind(request, command, binder);
        // 繫結
        binder.bind(request);
        // 校驗
        Validator[] validators = getValidators();
        if (validators != null) {
            for (Validator validator : validators) {
                if (validator.supports(command.getClass())) {
                    ValidationUtils.invokeValidator(validator, command, binder.getBindingResult());
                }
            }
        }
        return binder.getBindingResult();
    }

}

通過上面的方法,便可以完成將表單資料封裝到一個物件(通常稱為繫結資料),並且完成校驗,如果在校驗的過程中出現了錯誤,錯誤資訊會儲存在BindingResult 物件裡面,通過呼叫它的xxx.hasErrors()方法,可以判斷資料校驗時是否出錯了。

歡迎大家多交流!

相關推薦

spring mvc 物件 進行

眾所周知,Spring Mvc可以對錶單裡傳到後臺的資料進行自動的封裝(前提是遵循一定的規則),現在可以將spring裡面的一些方法做一個合併,形成一個新的方法,使其達到接收並封裝表單資料、完成資料校

spring mvc 兩個物件進行表單提交

//form表單是可以提交多個物件的/** * 儲存簡歷 * @param bean 簡歷資訊 * @param jobIntention 求職意向 * @return */ @Logined @RequestMapping(value = "/jo

Spring boot 通過AOP獲取引數名稱及引數值對引數進行

/** * 定義切入點為 帶有 NotEnableEmpty 註解的 */ @Pointcut("@annotation(cn.acsm.paddy.manage.anotation.NotEnableEmpty)") public void params() { }

spring boot 接收JSON時發生轉義字元物件失敗

在做Spring boot 專案時發生json轉義字元繫結物件失敗,原因是json裡面有些欄位包括空格,反斜槓等,如果框架沒有對這些json進行轉化時,就會報類似如下錯誤 org.codehaus.

Spring MVC(十三)--保存獲取屬性參數

信息 sta ams val esp 路徑 也會 user 方法 這裏的屬性參數主要是指通過request、session、cookie等設置的屬性,有時候我們需要將一些請求的參數保存到HTTP的request或者session對象中去,在控制器中也會進行設置和獲取操作,s

Js的四種呼叫方式和this物件——《JavaScript語言精粹》

JavaScript一共有四種呼叫模式:方法呼叫模式、函式呼叫模式、構造器呼叫模式和apply呼叫模式。 方法呼叫模式: 當一個函式被儲存為物件的一個屬性時,我們稱之為一個方法。當一個方法被呼叫時,this被繫結到該物件。 var myObject = { value: 0,

WPF 資料庫獲得的資料DataTable到DataGrid進行介面顯示,自動生成列頭。

一般在WPF使用DataGrid時,在Xaml頁面定義各個列頭和繫結資料來源。 從資料庫讀取的資料DataTable也可以直接繫結DataGrid。 1、在Xaml拖一個DataGrid。 2、得到DataTable       宣告DataTable

使用spring mvc的攔截器,進行日誌記錄

spring記錄日誌有兩種,一種是通過AOP,另一種是通過攔截器interceptor,這裡選擇的是攔截器interceptor:  一、Interceptor實現類 SpringMVC 中的Interceptor 攔截請求是通過HandlerInterceptor 來實

WPF —ListView用ItemsSource物件列表

雖然wpf 開發有段時間了,但是對於繫結資料這塊兒,理解的還是不太深入 。 xaml  <ListView Canvas.Left="59" Canvas.Top="170" Height="253" Name="listView1" Width="714"

使用Map儲存物件進行操作示例

例子 package com.test.jhf_6_21.classwork; import java.util.HashMap; import java.util.Iterator; import java.util.Map; public clas

listview資料顯示ImageList圖片

this.listView1.Columns.Add("房間ID"); this.listView1.Columns.Add("房間型別");

knockoutjs 物件到列表中 並用checkbox選擇 返回資料

今天一個操作是先要ajax返回列表中的json資料,然後繫結到一個table列表中,table首列是一個checkbox控制器,可以多選多個數據物件,然後返回結果 html程式碼: <div class="container"> <div clas

給id屬性用v-bind動態物件和字串

class和id 動態的繫結一個字串達到自定義名稱的方法::class="'字串'+item.value"  :id="'字串'+item.value" <!DOCTYPE html> <html> <head>   <meta c

spring mvc 檔案上傳攜帶其他引數

這是主要使用到的jar 檔案是:spring mvc +apache common-fileuplad  第一步:web.xml 檔案。【重點是spring mvc的攔截器和相關監聽器】 <?xml version="1.0" encoding="UTF-8"?&g

Spring Boot列舉型別引數

一、概述 在利用Spring進行Web後臺開發時,經常會遇到列舉型別的繫結問題。一般情況下,如果Spring接收到的引數值為字串型別,Spring會根據列舉的值與傳入的字串進行對應。假設有如下列舉 清單1:列舉定義 public enum Gender { MALE, FEMALE;

彈出一個登入層,對登入進行

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="彈出層.aspx.cs" Inherits="彈出層" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML

Android -- 跨應用service通訊

第一步, 需要修改service1專案中aidl,增加一個方法。 package com.example.service1.aidl; interface IMyService { void basicType(); v

Spring-MVC中ModelAndView物件所新增的內容在前端用EL表示式獲取不到的問題

原來是IntelliJ IDEA預設生成的web.xml文件的頭部不正確 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "htt

easyui datagrid 編輯行combogrid實現下拉賦值

1.第一步初始化 $.extend($.fn.datagrid.defaults.editors, {             combogrid: {                 init: function (container, options) {      

Spring Mvc那點事---(12)Spring Mvc之mybatis使用註解進行增刪改查

       上一節我們演示了通過使用Mapper配置檔案進行資料的增刪改查,實際上還有另一種方法,mybatis為我們提供註解來操作資料庫,這樣我們就不要在mapper.xml中進行SQL語句配置,只需要在介面方法中使用mybatis註解進行操作,mybatis為我們提供