可能重复:
How to pass parameters to ui:include that inside of c:forEach tag
这一个(How do I set Managed Bean field to the value of a ui:param?)运作良好。如果我循环使用ui:include在JST的帮助下c:forEach,Facelet属性(ui:param)总是解析为null。
<c:forEach items="#{myList} var="myItem">
<ui:include src="#{myItem.myPage}">
<ui:param name="myVar" value="#{myItem.myData}"/>
</ui:include>
</c:forEach>
我正在尝试解决JSF Managed Bean中的Facelet属性(专门针对一个ui:include每个JSF视图)
FacesContext facesCtx = FacesContext.getCurrentInstance();
FaceletContext faceletCtx = (FaceletContext) facesCtx.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
Object myVar = faceletCtx.getAttribute("myVar");
只要我没有循环(没有c:forEach),这种方法效果很好。但在引入c:forEach后,myVar始终为null。
什么是JSTL c:forEach更改facelet属性(名称)?我怎样才能在我的Backing Bean中访问它们?
不幸的是,FaceletContext没有公开任何列出所有facelet属性的方法,所以我可以自己“找到”它们......:S