从xhtml文件创建jsf视图/组件树
我需要在应用程序启动时访问jsf页面组件树。 我在网上发现了这个资源
UIViewRoot viewRoot = context.getApplication().getViewHandler().createView(context, "/path/to/some.xhtml");
但由此产生的viewRoot没有任何孩子。 有人知道什么是最好的方法吗?
谢谢。
你忘了建立视图。 你可以使用ViewDeclarationLanguage#buildView()
。 这里是它的javadoc的摘录(重点是我的):
执行特定于此VDL实现的任何操作,以使参数UIViewRoot
(必须已通过调用createView(javax.faces.context.FacesContext, java.lang.String)
, 并将其填充到子级 。
因此,这应该做到:
String viewId = "/path/to/some.xhtml";
FacesContext context = FacesContext.getCurrentInstance();
ViewHandler viewHandler = context.getApplication().getViewHandler();
UIViewRoot view = viewHandler.createView(context, viewId);
viewHandler.getViewDeclarationLanguage(context, viewId).buildView(context, view);
// view should now have children.
顺便说一下,您也可以直接使用ViewDeclarationLanguage#createView()
来创建视图,而不是ViewHandler#createView()
。
String viewId = "/path/to/some.xhtml";
FacesContext context = FacesContext.getCurrentInstance();
ViewDeclarationLanguage vdl = context.getApplication().getViewHandler().getViewDeclarationLanguage(context, viewId);
UIViewRoot view = vdl.createView(context, viewId);
vdl.buildView(context, view);
// view should now have children.
链接地址: http://www.djcxy.com/p/63073.html
上一篇: creating jsf view/Component tree from the xhtml file
下一篇: How to find opportunities for 3 + way trades (Like how sports teams do it)