【问题标题】:How to get ui:param of ui:include wrapped in c:forEach in JSF ManagedBean? [duplicate]如何获取 ui:param 的 ui:include 包装在 JSF ManagedBean 中的 c:forEach 中? [复制]
【发布时间】: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

【问题讨论】:

    标签: java jsf facelets


    【解决方案1】:

    问题是 c:forEach 不适合与 JSF 一起使用。这就是为什么我们有&lt;ui:repeat&gt;,它的作用基本相同,但它是 JSF 组件树的一部分。进一步解释例如here

    【讨论】:

    猜你喜欢
    • 2016-02-11
    • 2012-05-17
    • 2011-12-18
    • 2016-03-09
    • 2011-02-01
    • 2018-02-21
    • 2012-01-14
    • 2011-12-21
    相关资源
    最近更新 更多