0

可能重复:
如何将参数传递给 ui:在 c:forEach 标记中包含该参数

这个(如何将托管 Bean 字段设置为 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 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");

只要我不循环 (no c:forEach) 这种方法效果很好。但是在引入 c:forEach 之后 myVar 始终为空。

JSTL c:forEach 在 facelet 属性(名称)上的变化是什么?我怎样才能在我的 Backing Bean 中访问它们?

不幸的是 FaceletContext 没有公开任何方法来列出所有 facelet 属性,所以我可能会自己“找到”它们......:S

4

1 回答 1

1

事情是c:forEach不能与 JSF 一起使用。这就是为什么我们拥有<ui:repeat>基本相同但它是 JSF 组件树的一部分的原因。进一步的解释例如here

于 2012-07-02T06:13:09.503 回答