これ ( Managed 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マネージドBean内のFacelet属性を解決しようとしています(これは、JSFビューごとに正確に1つのui:include専用です)
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