2011-09-08 49 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

我会试试看,谢谢! –

相关问题