2011-09-08 54 views
0

我一直在尋找一種方法來創建一個返回對象或映射的自定義JSTL標記,而不是直接使用out.print來轉儲標記代碼。創建一個返回對象而不是寫入輸出流的自定義JSTL標記

具體來說,我想要做的事:

<c:set var="links"> 
    <util:getLinks cmsComponent="[id of some xml structure]" xPath="[start point]" /> 
</c:set> 

<!-- parse the obtained structure into a nice ul --> 

我知道我可以:

  • 用我的控制器來做到這一點,通過計算對象返回在視圖中。不幸的是,我們不得不使用的CMS比在視圖中執行它要糟糕得多 - 在Java代碼中獲取組件ID是一件痛苦的事情。我知道這很糟糕。
  • 使EL函數返回的對象,並做到:
    <c:set var="links" value="${util:getLinks(componentId, xPath)}" />
    我很好奇,如果我能做到這一點使用自定義的標籤,因爲我不能用google搜索發現任何東西。

回答

2

當然,標籤應該簡單地把它的結果放在PageContext。一個屬性應該指定它將出現的名稱。例如,<c:url />的工作方式就是這樣 - 您可以指定var,結果將以該名稱訪問。

<util:getLinks cmsComponent=".." xPath=".." var="links" /> 
+0

我會試試看,謝謝! –

相關問題