从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)