我想這樣做sommeting這樣的:Thymeleaf嵌套條件日:與
<div id="header_nav" th:fragment="header_nav (someId)" th:with="navPrefix=${'/content' + (someId ? ('/'+someId) : '')"}">
,後來用它作爲DIV中* {} navPrefix。我不知道如何嵌套條件。 任何人都可以幫助我嗎? Thanx!
我想這樣做sommeting這樣的:Thymeleaf嵌套條件日:與
<div id="header_nav" th:fragment="header_nav (someId)" th:with="navPrefix=${'/content' + (someId ? ('/'+someId) : '')"}">
,後來用它作爲DIV中* {} navPrefix。我不知道如何嵌套條件。 任何人都可以幫助我嗎? Thanx!
我懷疑這是因爲你使用th:include
當您使用的片段。按照Thymeleaf Documentationth:include
簡單地包括內容片段:
實際上將取代主機標籤鑑於日:包括將包括片段的內容到它的主機標籤,日:更換由片段的
如果您使用的是th:include
,那麼您的th:with
將不會包含在內,因此它將始終爲空。您可以使用與th:fragment
聲明相同的元素中的其他屬性來觀察此屬性,例如style
。
您可以使用th:replace
來解決此問題,它將交換整個片段,而不僅僅是內容。或者,你可以用一個th:block
,你可以用它來定義navPrefix
包裝你的片段內容:
<div th:fragment="header_nav(someId)">
<th:block th:with="navPrefix = ${'/content' + (someId != null ? ('/' + someId) : '')} ">
... contents of fragment ...
</th:block>
</div>
我看到的唯一問題是最後多餘的雙引號,並且在傳遞字符串時,三元運算符不包含布爾表達式。
以下工作,以塊內顯示任何前綴或傳遞的參數:
<div id="header_nav"
th:fragment="header_nav(someId)"
th:with="navPrefix = ${'/content' + (someId != null ? ('/' + someId) : '')} ">
<div th:text="${someId}"></div>
<div th:text="${navPrefix}"></div>
</div>
不幸的是這種方法不適合我的工作。 'someId'參數肯定會傳遞到fragmet的範圍,但'navPrefix'不存在。 – mooor
這是一種魅力,雖然由於信譽得分不足而無法投票。 – mooor