如何生成动态丰富的:panelMenu?
问题描述:
我有一个问题来生成动态菜单,我使用JSF1.2。我尝试了c:forEach和arrayList来生成动态的rich:panelMenu,因为BalusC在相关的论坛中建议,但是Accessor从未在c:forEach中触发过。它毁了我一天。任何人都可以为我提供解决方案如何生成动态丰富的:panelMenu?
<c:forEach items="#{serviceListBean.services}" var="child">
<rich:panelMenuItem mode="none">
<h:outputText value="#{child.serviceId}"></h:outputText>
</rich:panelMenuItem>
</c:forEach>
这段代码有什么问题?任何人都可以启发我吗?有关信息,serviceListBean是请求范围的bean。
答
两个可能的原因:
-
JSTL未声明为在JSP或Facelets的标记库。要确认此操作,请在浏览器中单击右键并选择查看源代码。您是否看到
<c:forEach>
标记在生成的HTML中未解析?如果您使用JSP,声明如下:<%@taglib prefic="c" uri="http://java.sun.com/jsp/jstl/core" %>
或者,如果你使用的Facelets,如根元素如下声明它:
xmlns:c="http://java.sun.com/jsp/jstl/core"
在如Tomcat一些服务器,这些服务器没有按不随JSTL出货,您还需要先安装JSTL,另请参阅this info page。
这段代码又被放置在一个JSF重复组件内,如
<h:dataTable>
与var="serviceListBean"
。这也不起作用。您还需要用<c:forEach>
替换JSF重复组件。
gr8 BalusC,用您的第一个解决方案解决。我使用错误的taglib uri作为,现在更改为,得到了工作。也有人在这个http://stackoverflow.com/questions/2394394/using-java-to-create-a-dynamic-richpanelmenu中引用,他使用http://java.sun.com/jstl/core,他得到了解决。这向我保证,没有问题。所以我从来没有想过要改变,如果BalusC评论。为什么这个taglib uri混乱?记录在哪里? – gkp 2011-04-17 05:51:00
它是1.0 uri。另见http://stackoverflow.com/tags/jstl/info – BalusC 2011-04-17 12:07:52