2015-12-02 55 views
0

我想這樣做sommeting這樣的:Thymeleaf嵌套條件日:與

<div id="header_nav" th:fragment="header_nav (someId)" th:with="navPrefix=${'/content' + (someId ? ('/'+someId) : '')"}"> 

,後來用它作爲DIV中* {} navPrefix。我不知道如何嵌套條件。 任何人都可以幫助我嗎? Thanx!

回答

0

我懷疑這是因爲你使用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> 
+0

這是一種魅力,雖然由於信譽得分不足而無法投票。 – mooor

0

我看到的唯一問題是最後多餘的雙引號,並且在傳遞字符串時,三元運算符不包含布爾表達式。

以下工作,以塊內顯示任何前綴或傳遞的參數:

<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> 
+0

不幸的是這種方法不適合我的工作。 'someId'參數肯定會傳遞到fragmet的範圍,但'navPrefix'不存在。 – mooor