2016-02-18 70 views
2

我正在尋找一種方法來動態地將html元素添加到使用Thymeleaf的其他html元素。Thymeleaf:追加到html元素/避免重複迭代

考慮以下幾點:

<ol class="ol1" /> 
<ol class="ol2" /> 
<ol class="ol3" /> 

<iterate th:each="model"> 
    <!-- ol1.append(model.name) --> 
    <!-- ol2.append(model.type) --> 
    <!-- ol3.append(model.something) --> 
</iterate> 

我知道,一個可能的解決方案有3個迴路,一個套在每一個<ol>標籤,像這樣:

<ol class="ol1"> 
    <iterate th:each="model"> 
    model.name 
    </iterate> 
</ol> 
<ol class="ol2"> 
    <iterate th:each="model"> 
    model.type 
    </iterate> 
</ol> 
<ol class="ol3"> 
    <iterate th:each="model"> 
    model.something 
    </iterate> 
</ol> 

這上面解決方案我的喜好太低效了。

那麼,Thymeleaf是否提供了在這種情況下只執行一次迭代的功能?

回答

1

對不起,沒有簡單或更有效的方法來做到這一點。我開始考慮其他方法來完成這個任務,沒有一個比你在問題中使用的三個循環更好。

+0

您對其他方法的研究包括擴展Thymeleaf核心API以允許可以調用自定義Java函數的自定義方言嗎?我還沒有找到辦法做到這一點,但我覺得應該有可能。 –

+0

您可以使用模板來完成此操作。參見http://www.thymeleaf.org/doc/tutorials/2.1/extendingthymeleaf.html#scenario-3-creating-your-own-template-system。我沒有與他們的經驗,所以我不能進一步協助。目前還不清楚你想在這裏消除什麼樣的「低效率」。我認爲這是開發工作,但是,看到你有興趣投入這項工作的努力,那可能不是你的目標。我相信任何獲得的處理效率都可以忽略不計。 – chrsalln

+0

另外,請注意,Thymeleaf 3使用新的方言/處理器系統,因此任何自定義作品都可能需要遷移,假設您將在發佈時進行升級。見https://github.com/thymeleaf/thymeleaf/issues/401 – chrsalln