




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第14章SpringBoot的Web開發(fā)學習目的與要求本章首先介紹Thymeleaf視圖模板引擎技術(shù),然后介紹如何使用Thymeleaf模板技術(shù)進行頁面信息國際化,最后介紹Spring
Boot與Thymeleaf的表單驗證。通過本章的學習,掌握SpringBoot的Web開發(fā)技術(shù)?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
目錄14.1Thymeleaf模板引擎14.2SpringBoot與Thymeleaf實現(xiàn)頁面信息國際化14.3SpringBoot與Thymeleaf的表單驗證14.4基于Thymeleaf與BootStrap的Web開發(fā)實例《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
14.1Thymeleaf模板引擎在SpringBoot的Web應(yīng)用中,建議開發(fā)者使用HTML完成動態(tài)頁面。SpringBoot提供了許多模板引擎,主要包括FreeMarker、Groovy、Thymeleaf和Mustache。因為Thymeleaf提供了完美的SpringMVC支持,所以在SpringBoot的Web應(yīng)用中推薦使用Thymeleaf作為模板引擎。Thymeleaf是一個Java類庫,是一個xml/xhtml/html5的模板引擎,能夠處理HTML、XML、JavaScript以及CSS,可以作為MVC
Web應(yīng)用的View層顯示數(shù)據(jù)?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
14.1.1SpringBoot的Thymeleaf支持在SpringBoot1.X版本中,spring-boot-starter-thymeleaf依賴包含了spring-boot-starter-web模塊。但是,在Spring5中,WebFlux的出現(xiàn)對于Web應(yīng)用的解決方案將不再唯一。所以,spring-boot-starter-thymeleaf依賴不再包含spring-boot-starter-web模塊,需要開發(fā)人員自己選擇spring-boot-starter-thymeleaf模塊依賴?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
14.1.2Thymeleaf基礎(chǔ)語法1.引入Thymeleaf首先,將View層頁面文件的html標簽修改如下:<htmlxmlns:th="">然后,在View層頁面文件的其它標簽里,使用th:*動態(tài)處理頁面。示例代碼如下:<imgth:src="'images/'+${aBook.picture}"/>其中,${aBook.picture}獲得數(shù)據(jù)對象aBook的picture屬性?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.輸出內(nèi)容使用th:text和th:utext(不對文本轉(zhuǎn)義,正常輸出)將文本內(nèi)容輸出到所在標簽的body中。假如在國際化資源文件messages_en_US.properties中有消息文本“test.myText=<strong>TestInternationalMessage</strong>”,那么在頁面中可以使用如下兩種方式獲得消息文本:<pth:text="#{test.myText}"></p><!--對文本轉(zhuǎn)義,即輸出<strong>TestInternationalMessage</strong>--><pth:utext="#{test.myText}"></p><!--對文本不轉(zhuǎn)義,即輸出加粗的“TestInternationalMessage”-->《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.基本表達式1)變量表達式:${...}用于訪問容器上下文環(huán)境中的變量,示例代碼如下:<spanth:text="${information}">2)選擇變量表達式:*{...}選擇變量表達式計算的是選定的對象(th:object屬性綁定的對象),示例代碼如下:<divth:object="${session.user}">name:<spanth:text="*{firstName}"></span><br><!--firstName為user對象的屬性-->surname:<spanth:text="*{lastName}"></span><br>nationality:<spanth:text="*{nationality}"></span><br></div>3)信息表達式:#{...}一般用于顯示頁面靜態(tài)文本。將可能需要根據(jù)需求而整體變動的靜態(tài)文本放在properties文件中以便維護(如國際化)。通常與th:text屬性一起使用,示例代碼如下:<pth:text="#{test.myText}"></p>《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
4.引入URLThymeleaf模板通過@{...}表達式引入URL,示例代碼如下:<!--默認訪問src/main/resources/static下的css文件夾--><linkrel="stylesheet"th:href="@{css/bootstrap.min.css}"/><!--訪問相對路徑--><ath:href="@{/}">去看看</a><!--訪問絕對路徑--><ath:href="@{/index.html(param1='傳參')}">去清華大學出版社</a><!--默認訪問src/main/resources/static下的'images文件夾--><imgth:src="'images/'+${aBook.picture}"/>《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
5.訪問WebContext對象中的屬性Thymeleaf模板通過一些專門的表達式從模板的WebContext獲取請求參數(shù)、請求、會話和應(yīng)用程序中的屬性,具體如下:${xxx}將返回存儲在Thymeleaf模板上下文中的變量xxx或請求request作用域中的屬性xxx。${param.xxx}將返回一個名為xxx的請求參數(shù)(可能是多個值)。${session.xxx}將返回一個名為xxx的HttpSession作用域中的屬性。${application.xxx}將返回一個名為xxx的全局ServletContext上下文作用中的屬性。與EL表達式一樣,使用${xxx}獲得變量值,使用${對象變量名.屬性名}獲取JavaBean屬性值。但需要注意的是,${}表達式只能在th標簽內(nèi)部有效?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
6.運算符在Thymeleaf模板的表達式中可以使用+、-、*、/、%等各種算術(shù)運算符,也可以使用>、<、<=、>=、==、!=等各種邏輯運算符。示例代碼如下:<trth:class="(${row}=='even')?'even':'odd'">...</tr>《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
7.條件判斷1)if和unless標簽只有在th:if條件成立時才顯示,th:unless與th:if相反,只有條件不成立時,才顯示標簽內(nèi)容。示例代碼如下:<ahref="success.html"th:if="${user!=null}">成功</a><ahref="success.html"th:unless="${user=null}">成功</a>2)switch語句Thymeleaf模板也支持多路選擇switch語句結(jié)構(gòu),默認屬性default可用“*”表示。示例代碼如下:<divth:switch="${user.role}"><pth:case="'admin'">Userisanadministrator</p><pth:case="'teacher'">Userisateacher</p><pth:case="*">Userisastudent</p></div>《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
8.循環(huán)(基本循環(huán))Thymeleaf模板使用th:each="obj,iterStat:${objList}"標簽進行迭代循環(huán),迭代對象可以是java.util.List、java.util.Map或數(shù)組等。示例代碼如下:<!--循環(huán)取出集合數(shù)據(jù)--><divclass="col-md-4col-sm-6"th:each="book:${books}"> <ahref="">
<imgth:src="'images/'+${book.picture}"alt="圖書封面"style="height:180px;width:40%;"/> </a> <divclass="caption"> <h4th:text="${book.bname}"></h4> <pth:text="${book.author}"></p> <pth:text="${book.isbn}"></p> <pth:text="${book.price}"></p> <pth:text="${book.publishing}"></p> </div></div>《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
8.循環(huán)(循環(huán)狀態(tài)的使用)<divclass="col-md-4col-sm-6"th:each="book,bookStat:${books}"> <ahref=""> <imgth:src="'images/'+${book.picture}"alt="圖書封面"style="height:180px;width:40%;"/> </a> <divclass="caption"> <!--循環(huán)狀態(tài)bookStat--> <h3th:text="${bookStat.count}"></h3> <h4th:text="${book.bname}"></h4> <pth:text="${book.author}"></p> <pth:text="${book.isbn}"></p> <pth:text="${book.price}"></p> <pth:text="${book.publishing}"></p> </div></div>《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
14.1.3Thymeleaf的常用屬性1.th:action定義后臺控制器路徑,類似<form>標簽的action屬性。示例代碼如下:<formth:action="@{/login}">...</form>2.th:each集合對象遍歷,功能類似JSTL標簽<c:forEach>。示例代碼如下:<divclass="col-md-4col-sm-6"th:each="gtype:${gtypes}"> <divclass="caption"> <pth:text="${gtype.id}"></p> <pth:text="${gtype.typename}"></p> </div></div>《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
14.1.3Thymeleaf的常用屬性3.th:field常用于表單參數(shù)綁定,通常與th:object一起使用。示例代碼如下:<formth:action="@{/login}"th:object="${user}"><inputtype="text"value=""th:field="*{username}"></input><inputtype="text"value=""th:field="*{role}"></input></form>4.th:href定義超鏈接,類似<a>標簽的href屬性。value形式為@{/logout},示例代碼如下:<ath:href="@{/gogo}"></a>5.th:iddiv的id聲明,類似html標簽中的id屬性,示例代碼如下:<divth:id="stu+(${rowStat.index}+1)"></div>《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
14.1.3Thymeleaf的常用屬性6.th:if條件判斷。如果為否則標簽不顯示,示例代碼如下:<divth:if="${rowStat.index}==0">...dosomething...</div>7.th:fragment聲明定義該屬性的div為模板片段,常用于頭文件、頁尾文件的引入。常與th:include、th:replace一起使用。8.th:object用于表單數(shù)據(jù)對象綁定,將表單綁定到后臺Controller的一個JavaBean參數(shù),常與th:field一起使用,進行表單數(shù)據(jù)綁定?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
14.1.3Thymeleaf的常用屬性【例14-1】表單提交及數(shù)據(jù)綁定的實現(xiàn)過程1)創(chuàng)建Web應(yīng)用創(chuàng)建基于Lombok與Thymeleaf依賴的SpringBootWeb應(yīng)用ch14_1,并在全局配置文件perties中,配置應(yīng)用的上下文路徑server.servlet.context-path=/ch14_1?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2)創(chuàng)建實體類在Web應(yīng)用ch14_1的src/main/java目錄下,創(chuàng)建包com.ch7_1.model,并在該包中創(chuàng)建實體類LoginBean,代碼如下:packagecom.ch7_1.model;importlombok.Data;@DatapublicclassLoginBean{Stringuname;Stringurole;}《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3)創(chuàng)建控制器類在Web應(yīng)用ch14_1的src/main/java目錄下,創(chuàng)建包com.ch14_1.controller,并在該包中創(chuàng)建控制器類LoginController。@GetMapping("/toLogin")publicStringtoLogin(Modelmodel){/*loginBean與login.html頁面中的th:object="${loginBean}"相同,類似于SpringMVC的表單綁定。*/model.addAttribute("loginBean",newLoginBean());return"login";}@PostMapping("/login")publicStringgreetingSubmit(@ModelAttributeLoginBeanloginBean){/*@ModelAttributeLoginBeanloginBean接收login.html頁面中的表單數(shù)據(jù),并將loginBean對象保存到model中返回給result.html頁面顯示。*/System.out.println("測試提交的數(shù)據(jù):"+loginBean.getUname());return"result";
}《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
4)創(chuàng)建頁面表示層Tymeleaf模板默認將視圖頁面放在src/main/resources/templates目錄下。因此,在Web應(yīng)用ch14_1的src/main/resources/templates目錄下,創(chuàng)建頁面login.html和result.html。《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
5)運行首先,運行Ch141Application主類。然后,訪問http://localhost:8080/ch14_1/toLogin,運行結(jié)果如圖14.2所示。《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
14.1.3Thymeleaf的常用屬性9.th:src用于外部資源引入,類似于<script>標簽的src屬性。示例代碼如下:<imgth:src="'images/'+${aBook.picture}"/>10.th:text文本顯示,將文本內(nèi)容顯示到所在標簽的body中。示例代碼如下:<tdth:text="${username}"></td>11.th:value用于標簽賦值,類似標簽的value屬性。示例代碼如下:<optionth:value="Adult">Adult</option><inputtype="hidden"th:value="${msg}"
/>《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
14.1.3Thymeleaf的常用屬性12.th:style用于修改標簽style,示例代碼如下:<spanth:style="'display:'+@{(${myVar}?'none':'inline-block')}">myVar是一個變量</span>13.th:onclick用于修改點擊事件,示例代碼如下:<buttonth:onclick="'getCollect()'"></button>《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
目錄14.1Thymeleaf模板引擎14.2SpringBoot與Thymeleaf實現(xiàn)頁面信息國際化14.3SpringBoot與Thymeleaf的表單驗證14.4基于Thymeleaf與BootStrap的Web開發(fā)實例《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
14.2SpringBoot與Thymeleaf實現(xiàn)頁面信息國際化【例14-2】國際化的實現(xiàn)過程,具體實現(xiàn)步驟如下。1.編寫國際化資源屬性文件1)編寫管理員模塊的國際化信息在應(yīng)用ch14_1的src/main/resources目錄下創(chuàng)建i18n/admin文件夾,并在該文件夾下創(chuàng)建adminMperties、adminMessages_en_US.properties和adminMessages_zh_CN.properties資源屬性文件。adminMperties表示默認加載的信息;adminMessages_en_US.properties表示英文信息(en代表語言代碼,US代表國家地區(qū));adminMessages_zh_CN.properties表示中文信息?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
1.編寫國際化資源屬性文件2)編寫用戶模塊的國際化信息在應(yīng)用ch14_1的src/main/resources目錄下創(chuàng)建i18n/before文件夾,并在該文件夾下創(chuàng)建beforeMperties、beforeMessages_en_US.properties和beforeMessages_zh_CN.properties資源屬性文件。3)編寫公共模塊的國際化信息在應(yīng)用ch14_1的src/main/resources目錄下創(chuàng)建i18n/common文件夾,并在該文件夾下創(chuàng)建commonMperties、commonMessages_en_US.properties和commonMessages_zh_CN.properties資源屬性文件?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
2.添加配置文件內(nèi)容,引入資源屬性文件在應(yīng)用ch14_1的配置文件perties中,添加如下內(nèi)容,引入資源屬性文件。spring.messages.basename=i18n/admin/adminMessages,i18n/before/beforeMessages,i18n/common/commonMessages《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.重寫localeResolver方法配置語言區(qū)域選擇在應(yīng)用ch14_1的com.ch14_1包中,創(chuàng)建配置類LocaleConfig,該配置類實現(xiàn)WebMvcConfigurer接口,并配置語言區(qū)域選擇。@Configuration@EnableAutoConfigurationpublicclassLocaleConfigimplementsWebMvcConfigurer{ @Bean publicLocaleResolverlocaleResolver(){ } @Bean publicLocaleChangeInterceptorlocaleChangeInterceptor(){ } @Override publicvoidaddInterceptors(InterceptorRegistryregistry){ registry.addInterceptor(localeChangeInterceptor()); }
}《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
4.創(chuàng)建控制器類I18nTestController在應(yīng)用ch14_1的com.ch14_1.controller包中,創(chuàng)建控制器類I18nTestController。@Controller@RequestMapping("/i18n")publicclassI18nTestController{@GetMapping("/first")publicStringtestI18n(){return"/i18n/first";}@GetMapping("/admin")publicStringadmin(){return"/i18n/admin";}@GetMapping("/before")publicStringbefore(){return"/i18n/before";}}《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
5.創(chuàng)建視圖頁面,并獲得國際化信息在應(yīng)用ch14_1的src/main/resources/templates目錄下,創(chuàng)建文件夾i18n。并在該文件夾中創(chuàng)建admin.html、before.html和first.html視圖頁面,并在這些視圖頁面中使用th:text="#{xxx}"獲得國際化信息?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
6.運行《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
目錄14.1Thymeleaf模板引擎14.2SpringBoot與Thymeleaf實現(xiàn)頁面信息國際化14.3SpringBoot與Thymeleaf的表單驗證14.4基于Thymeleaf與BootStrap的Web開發(fā)實例《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
14.3SpringBoot與Thymeleaf的表單驗證本節(jié)使用Hibernate
Validator對表單進行驗證,注意它和Hibernate無關(guān),只是使用它進行數(shù)據(jù)驗證。因為spring-boot-starter-web不再依賴hibernate-validator的jar包,所以在Spring
Boot的Web應(yīng)用中,使用Hibernate
Validator對表單進行驗證時,需要加載Hibernate
Validator所依賴的jar包。<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId></dependency>使用Hibernate
Validator驗證表單時,需要利用它的標注類型在實體模型的屬性上嵌入約束?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
HibernateValidator標注類型1.空檢查@Null:驗證對象是否為null。@NotNull:驗證對象是否不為null,無法查檢長度為0的字符串。@NotBlank:檢查約束字符串是不是null,還有被trim后的長度是否大于0,只對字符串,且會去掉前后空格。@NotEmpty:檢查約束元素是否為null或者是empty。示例如下:@NotBlank(message="{goods.gname.required}")//goods.gname.required為屬性文件的錯誤代碼privateStringgname;《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
HibernateValidator標注類型2.booelan檢查@AssertTrue:驗證boolean屬性是否為true。@AssertFalse:驗證boolean屬性是否為false。示例如下:@AssertTrueprivatebooleanisLogin;3.長度檢查@Size(min=,max=):驗證對象(Array,Collection,Map,String)長度是否在給定的范圍之內(nèi)。@Length(min=,max=):驗證字符串長度是否在給定的范圍之內(nèi)。示例如下:@Length(min=1,max=100)privateStringgdescription;《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
HibernateValidator標注類型4.日期檢查@Past:驗證Date和Calendar對象是否在當前時間之前。@Future:驗證Date和Calendar對象是否在當前時間之后。@Pattern:驗證String對象是否符合正則表達式的規(guī)則。示例如下:@Past(message="{gdate.invalid}")privateDategdate;《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
HibernateValidator標注類型5.數(shù)值檢查@Min:驗證Number和String對象是否大等于指定的值。@Max:驗證Number和String對象是否小等于指定的值。@DecimalMax:被標注的值必須不大于約束中指定的最大值,這個約束的參數(shù)是一個通過BigDecimal定義的最大值的字符串表示,小數(shù)存在精度。@DecimalMin:被標注的值必須不小于約束中指定的最小值,這個約束的參數(shù)是一個通過BigDecimal定義的最小值的字符串表示,小數(shù)存在精度。@Digits:驗證Number和String的構(gòu)成是否合法。@Digits(integer=,fraction=):驗證字符串是否符合指定格式的數(shù)字,interger指定整數(shù)精度,fraction指定小數(shù)精度。@Range(min=,max=):檢查數(shù)字是否介于min和max之間。@Valid:對關(guān)聯(lián)對象進行校驗,如果關(guān)聯(lián)對象是個集合或者數(shù)組,那么對其中的元素進行校驗,如果是一個map,則對其中的值部分進行校驗。@CreditCardNumber:信用卡驗證。@Email:驗證是否是郵件地址,如果為null,不進行驗證,通過驗證。@Range(min=0,max=100,message="{gprice.invalid}")privatedoublegprice;《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
14.3SpringBoot與Thymeleaf的表單驗證【例14-3】使用Hibernate
Validator驗證表單的過程。1.創(chuàng)建Web應(yīng)用創(chuàng)建基于Lombok與Thymeleaf依賴的SpringBootWeb應(yīng)用ch14_2,并在全局配置文件perties中,配置應(yīng)用的上下文路徑server.servlet.context-path=/ch14_2。2.加載HibernateValidator依賴在應(yīng)用ch14_2的pom.xml文件中添加Hibernate
Validator所依賴的JAR包?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
3.創(chuàng)建表單實體模型在應(yīng)用ch14_2的src/main/java目錄下,創(chuàng)建com.ch14_2.model包,并在該包中創(chuàng)建表單實體模型類Goods。在該類使用HibernateValidator的標注類型進行表單驗證。@DatapublicclassGoods{@NotBlank(message="商品名必須輸入")
@Length(min=1,max=5,message="商品名長度在1到5之間")privateStringgname;@Range(min=0,max=100,message="商品價格在0到100之間")privatedoublegprice;}《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
4.創(chuàng)建控制器在應(yīng)用ch14_2的src/main/java目錄下,創(chuàng)建com.ch14_2.controller包,并在該包中創(chuàng)建控制器類TestValidatorController。在該類中有兩個處理方法,一個是界面初始化處理方法testValidator,一個是添加請求處理方法add。在add方法中,使用@Validated注解使驗證生效。@PostMapping("/add")publicStringadd(@ModelAttribute("goodsInfo")@ValidatedGoodsgoods,BindingResultrs){
//@ModelAttribute("goodsInfo")與th:object="${goodsInfo}"相對應(yīng)
if(rs.hasErrors()){//驗證失敗
return"testValidator";
}
//驗證成功,可以到任意地方,在這里直接到testValidator界面
return"testValidator";}《JavaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
5.創(chuàng)建視圖頁面在應(yīng)用ch14_2的src/main/resources/templates目錄下,創(chuàng)建視圖頁面testValidator.html。在視圖頁面中,直接讀取到ModelAttribute里面注入的數(shù)據(jù),然后通過th:errors="*{xxx}"獲得驗證錯誤信息?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
6.運行首先,運行Ch142Application主類。然后,訪問http://localhost:8080/ch14_2/testValidator。表單驗證失敗效果如圖14.6所示?!禞avaWeb開發(fā)從入門到實戰(zhàn)(微課視頻版)(IntelliJIDEA版)》陳恒
主編,清華大學出版社,2024
目錄14.1Thymeleaf模板引擎14.2SpringBoot與Thymeleaf實現(xiàn)頁面信息國際化14.3SpringBoot與Thymeleaf的表單驗證14.4基于Thymele
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 親人兄弟和解協(xié)議書
- 聯(lián)誼學校共建協(xié)議書
- 中途暗股協(xié)議書模板
- 外賣委托協(xié)議書模板
- 聘用美術(shù)老師協(xié)議書
- 物業(yè)消防改造協(xié)議書
- 簽訂房產(chǎn)分割協(xié)議書
- 勞務(wù)協(xié)作計劃協(xié)議書
- 商場設(shè)備代管協(xié)議書
- 撞車諒解協(xié)議書范本
- 《經(jīng)絡(luò)與腧穴》課件-手太陰肺經(jīng)
- 人教版(2024)七年級下冊英語期中復(fù)習:Unit1~4+期中共5套學情調(diào)研檢測試卷(含答案)
- 中考化學主題復(fù)習(重慶)專題4綜合實驗的探究
- 專題01 富強與創(chuàng)新【考情透視+框架梳理+考點突破+題型歸納】道德與法治上學期期末高效復(fù)習資料
- 人力資源管理軟件采購協(xié)議
- 電動汽車充電樁項目投資商業(yè)計劃書范本
- 中國技能大賽-第45屆世界技能大賽全國選拔賽“水處理技術(shù)”項目技術(shù)工作文件
- 學校運動會目的
- 講解員禮儀培訓
- 臺風知識簡介(共29張課件)
- 音樂鑒賞與實踐 第一單元第四課音樂的力量(下)
評論
0/150
提交評論