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為我們提供