Ответ 1
Вы забыли представление построить. Вы можете использовать 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.