我有一个生成动态菜单的问题,我正在使用JSF1.2。我尝试使用arrayList生成c:forEach以生成动态rich:panelMenu,因为BalusC在相关论坛中建议,但是在c:forEach中永远不会触发Accessor。它毁了我一天。任何人都可以为我提供解决方案吗?
<c:forEach items="#{serviceListBean.services}" var="child">
<rich:panelMenuItem mode="none">
<h:outputText value="#{child.serviceId}"></h:outputText>
</rich:panelMenuItem>
</c:forEach>
这段代码有什么问题?任何人都可以开导我吗?对于info,serviceListBean是请求范围的bean。
答案 0 :(得分:0)
两个可能的原因:
JSTL未在JSP或Facelets中声明为taglib。要确认这一点,请在浏览器中右键单击页面,然后选择查看源。您是否在生成的HTML中看到<c:forEach>
标记未分析?如果您正在使用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重复组件。