多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > 互聯(lián)網(wǎng) > Spring MVC : Java模板引擎 Thymeleaf (三)

Spring MVC : Java模板引擎 Thymeleaf (三)

來源:程序員人生   發(fā)布時間:2014-09-10 08:41:22 閱讀次數(shù):3631次

下面以構造一個表單開始,講解 Thymeleaf的用法。為了演示方便,還是以經(jīng)典的注冊為例。

這是Thymeleaf的form的形式,

<form action="#" th:action="@{/register}" th:object="${person}" method="post"> </form>

action="#"是固定部分,因為action是由th:action指出。@符號是Thymeleaf對URL表達的方式。這是本文的第一個知識點。


  • URL表達式

首先是絕對路徑,

<a th:href="@{http://www.baidu.com}">

但最常用的肯定是相對路徑。很多朋友把上下文相對路徑和服務器相對路徑混為一談,其實它們是不同的。上下文相對路徑都是以 / 開頭的,比如是你的一個應用myapp部署在tomcat下,你可以用http://localhost:8080/myapp訪問它,這里的myapp就是上下文名稱。這時,

<a th:href="@{/login}">
解析后就是,

<a href="/myapp/login">

服務器相對路徑和它區(qū)別是,服務器相對路徑不會假設你的資源在應用上下文內(nèi),(你可能部署多個應用),也就是它允許你訪問在同一個服務器的其他上下文。比如,

<a th:href="@{~/other-app/hello.html}" >

解析后就是,

<a href="/other-app/showDetails.htm">

當然還有一種相對路徑(相對協(xié)議的),實際上是絕對路徑,

<a th:href="@{<span style="font-family: Arial, Helvetica, sans-serif;">//code.jquery.com/jquery-1.10.2.js</span><span style="font-family: Arial, Helvetica, sans-serif;">}" ></span>

解析后就是,

<a href="//code.jquery.com/jquery-1.10.2.js">


接下來是URL的添加參數(shù)問題,

<a th:href="@{/order/details(id=3)}">

解析后,

<a href="/order/details?id=3">

多個參數(shù)可以在()內(nèi)用逗號隔開。

下面的形式也是支持的,請細細體會,

<a th:href="@{/order/{id}/details(id=3,action='show_all')}">
解析后,

<a href="/order/3/details?action=show_all">
還有一個概念,叫URL fragment,什么是URL Fragment呢?




上面兩張圖基本說明了url fragment是什么了。


<a th:href="@{/home#all_info(action='show')}">

解析后,

<a href="/home?action=show#all_info">


下一個知識點是th:object,

  • th:object

該屬性在Thymeleaf很常見,但form會強制要求你寫這個。為了整合Spring,它對form里面的th:object規(guī)定如下:

  1. 必須是變量表達式(${...}),代表模型的名字,且不能向模型的屬性導航,就是${a}合法,但${a.b}不合法
  2. form內(nèi)不能有其他th:object,也就是HTML的表單不能嵌套
你可能猜到,這個object就是向后臺傳遞數(shù)據(jù)的。
在stackoverflow有個提問,"send datas from html to controller in thymeleaf?",采納的答案是這樣的:
controller:
@RequestMapping(value = "/processForm", method=RequestMethod.POST) public String processForm(@ModelAttribute(value="foo") Foo foo) { ... }

html:
<form action="#" th:action="@{/processForm}" th:object="${foo}" method="post"> <input type="text" th:field="*{bar}" /> <input type="submit" /> </form>

Foo.java
public class Foo { private String bar; public String getBar() { return bar; } public void setBar(String bar) { this.bar = bar; } }

看完之后,你肯定就能豁然開朗了。

還有個知識點是 th:field。

  • th:field
這個屬性在Spring-mvc里很重要,承擔著綁定后臺Bean屬性的重任,這和JSP標簽里的path很像。
對不同類型的input,th:field有些差異。這個之后再說。
要記住的是,th:field必須是選擇表達式(*{...})。

最后,你可能對前面提到的表達式有疑問了。
變量表達式 ${...}就是OGNL表達式。如果你使用springstandard,就是Spring表達式(SpEL)。
給個例子你就明白了,
<span th:text="${book.author.name}">

選擇表達式*{...}很像變量表達式,不同在于,它執(zhí)行的是前面選擇的對象。
<div th:object="${book}"> ... <span th:text="*{title}">...</span> ... </div>
前面選擇了book,接下來就按照它求值。

還有一個表達式,前面沒有出現(xiàn)。國際化表達式#{...},顧名思義是處理國際化的。
<table> ... <th th:text="#{header.address.city}">...</th> <th th:text="#{header.address.country}">...</th> ... </table>

國際化資源一般是在.properties文件定義。


生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久这里精品 | 久久天堂成人影院 | 日韩欧美一区二区三区 | 免费www | 欧美xxxx性| 国产精品亚洲欧美一区麻豆 | japanese日本护士xx在线 | 国产v日韩v欧美v精品专区 | 女性一级全黄生活片免费看 | 欧美黄色a| 国产视频一二三区 | 亚洲国产成人资源在线桃色 | 叼嗨视频免费 | 日本精品免费 | 欧美日韩国产精品自在自线 | 加勒比一区二区三区 | 另类综合图片 | 午夜福利毛片 | 性鸥美 | 欧美亚洲日本在线 | 波多野结衣在线观看一区 | 欧美性xxxx极品hd欧美 | 久久久久久久久国产 | 日本一区二区免费看 | 免费a网站 | 日本高清免费视频色www | 日韩欧美在线观看视频一区二区 | 欧美日韩在线永久免费播放 | 最近好看中文字幕视频 | 国产一区二区自拍视频 | 久久久久久综合对白国产 | 在线高清视频18jin观看 | 最新在线观看精品国产福利片 | 国产精品第一区第27页 | 性欧美高清video | 国产午夜精品久久久久 | 乌克兰性欧美精品高清bd | 亚洲不卡在线播放 | 一个色在线 | 二区国产 | 老司机av|