11.1 資料回顯基本用法
資料回顯就是當使用者資料提交失敗時,自動填充好已經輸入的資料。一般來說,如果使用 ajax 來做資料提交,基本上是沒有資料回顯這個需求的,但是如果是通過表單做資料提交,那麼資料回顯就非常有必要了。
11.1.1 簡單資料型別
簡單資料型別,實際上框架在這裡沒有提供任何形式的支援,就是我們自己手動配置。我們繼續在第 10 小節的例子上演示 demo。加入提交的 student 資料不符合要求,那麼重新回到新增 student 頁面,並且預設之前已經填好的資料。
前端
"/addstudent" method=
"post"
>
學生編號:<
/td>
"text" name=
"id" value=
"">
<
/td>
<
/tr>
學生姓名:<
/td>
"text" name=
"name" value=
"">
<
/td>
<
/tr>
/td>
"text" name=
"email" value=
"">
<
/td>
<
/tr>
學生年齡:<
/td>
"text" name=
"age" value=
"">
<
/td>
<
/tr>
"2">
"submit" value=
"提交"
>
<
/td>
<
/tr>
<
/table>
<
/form>
(
"/addstudent"
)public string addstudent2
(integer id, string name, string email, integer age, model model)
上面這種簡單資料型別的回顯,實際上非常麻煩,因為需要開發者在服務端乙個乙個手動設定。如果使用物件的話,就沒有這麼麻煩了,因為 springmvc 在頁面跳轉時,會自動將物件填充進返回的資料中。
此時,首先修改一下 student.jsp 頁面:
"/addstudent" method=
"post"
>
學生編號:<
/td>
"text" name=
"id" value=
"">
<
/td>
<
/tr>
學生姓名:<
/td>
"text" name=
"name" value=
"">
<
/td>
<
/tr>
/td>
"text" name=
"email" value=
"">
<
/td>
<
/tr>
學生年齡:<
/td>
"text" name=
"age" value=
"">
<
/td>
<
/tr>
"2">
"submit" value=
"提交"
>
<
/td>
<
/tr>
<
/table>
<
/form>
注意,服務端什麼都不用做,就說要返回的頁面就行了,student 這個變數會被自動填充到返回的 model 中。變數名就是填充時候的 key。如果想自定義這個 key,可以在引數中寫出來 model,然後手動加入 student 物件,就像簡單資料型別回顯那樣。
@modelattribute 這個註解,主要有兩方面的功能:
在資料回顯時,給變數定義別名
定義全域性資料
11.2.1 定義別名
在資料回顯時,給變數定義別名,非常容易,直接加這個註解即可:
("/addstudent"
)public string addstudent
(@modelattribute
("s"
)@validated
(validationgroup2.
class
) student student, bindingresult result)
return
"student";}
return
"hello";}
11.2.2 定義全域性資料
假設有乙個 controller 中有很多方法,每個方法都會返回資料給前端,但是每個方法返回給前端的資料又不太一樣,雖然不太一樣,但是沒有方法的返回值又有一些公共的部分。可以將這些公共的部分提取出來單獨封裝成乙個方法,用 @modelattribute 註解來標記。
例如在乙個 controller 中 ,新增如下**:
@modelattribute
("info"
)public map
info()
當使用者訪問當前 controller 中的任意乙個方法,在返回資料時,都會將新增了 @modelattribute 註解的方法的返回值,一起返回給前端。@modelattribute 註解中的 info 表示返回資料的 key。 SpringMVC學習 資料回顯
表單提交失敗需要再回到表單頁面重新填寫,原來提交的資料需要重新在頁面上顯示。對於簡單資料型別,如 integer string float 等使用model 將傳入的引數再放到 request 域實現顯示。2 public string edititems model model,integer i...
SpringMVC學習 資料回顯
表單提交失敗需要再回到表單頁面重新填寫,原來提交的資料需要重新在頁面上顯示。對於簡單資料型別,如 integer string float 等使用model 將傳入的引數再放到 request 域實現顯示。2public string edititems model model,integer id...
xxe 回顯與無回顯
學習於紅日安全 一 有回顯 1 直接將外部實體引用的uri設定為敏感目錄 xxe 2 將外部實體引用的 url 設定到本地伺服器,本地構建惡意 dtd 檔案,遠端注入 xxe evil 外部 evil.dtd 中的內容 二 無回顯可以使用外帶資料通道提取資料,先使用 filter 獲取目標檔案的內容...