这个(如何将托管 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