【发布时间】:2012-07-02 05:55:38
【问题描述】:
可能重复:
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?)运行良好。如果我在 JST c:forEach 的帮助下循环 ui:include,则 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 托管 Bean 中解析 Facelet 属性(它专门用于确切的一个 ui:include 每个 JSF 视图)
FacesContext facesCtx = FacesContext.getCurrentInstance();
FaceletContext faceletCtx = (FaceletContext) facesCtx.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
Object myVar = faceletCtx.getAttribute("myVar");
只要我不循环 (no c:forEach),这种方法就可以很好地工作。但是在引入 c:forEach 之后 myVar 总是为空。
JSTL c:forEach 在 facelet 属性(名称)上的变化是什么?我怎样才能在我的 Backing Bean 中访问它们?
不幸的是,FaceletContext 没有公开任何方法来列出所有 facelet 属性,所以我可能会自己“找到”它们......:S
【问题讨论】: