我知道在MyFaces中可以以编程方式将xhtml片段添加到组件树中,而不是使用ui:include
。
我所说的snipplet是(原始形式):
ViewDeclarationLanguage vdl = facesContext.getApplication().getViewHandler().getViewDeclarationLanguage(facesContext, facesContext.getViewRoot().getViewId());
Map<String, Object> attributes = new HashMap<String, Object>();
attributes.put("src", "/fragmentToInclude.xhtml");
UIComponent component = vdl.createComponent(facesContext, "http://java.sun.com/jsf/facelets", "include", attributes);
我遇到的问题是无法传递参数,通常会通过<ui:param .../>
标记传递。
我当然尝试将params添加到attributes
地图中:
attributes.put("testingParam1", "Yeah, it worked!");
但这似乎没有帮助。我的测试片段的内容非常简单:
<ui:composition xmlns:ui="http://xmlns.jcp.org/jsf/facelets">
<div class="testingDiv">#{empty testingParam1 ? 'testingParam1 IS EMPTY' : testingParam1}</div>
</ui:composition>
片段已正确加载,但我只能得到“空”信息。
我已经浏览了多个资源,但在那里找不到答案:
请知道,这是否可能?或者我错过了什么?感谢任何提示。