我想创建自定义组件,将新子组件添加到页面“head”方面。
此自定义组件基于 h:selectOneMenu。在 jsf 页面上使用时,用户可以简单地更改当前主题。我需要这个组件做的是将样式表子添加到 head facet。
我的组件支持 java。我试图在 encodeBegins() 方法中修改“head”,但我的孩子根本没有渲染。看一下实现:
@FacesComponent(value = "com.ramps.util.ThemeSelector")
public class ThemeSelector extends UIInput implements NamingContainer {
public void encodeBegin(FacesContext context) throws IOException {
UIComponent headFacet = context.getViewRoot().getFacet("javax_faces_location_HEAD");
Resource res = new Resource();
res.setName("...");
...
List <UIComponent> headChildren = headFacet.getChildren();
headChildren.add(res);
super.encodeBegin(context);
}
}
是否可以直接从我的自定义组件的支持 java 修改“head”方面?如果是这样,我错过了什么?
问候