UIViewRoot
представлено <f:view>
тегом. Если вы не укажете его явно на своей странице JSF, то он будет добавлен неявно.
UIViewRoot, который обычно находится в час: блок корпус
Нет, это не внутри тела, но по умолчанию, окружающий тело и голову. Как это:
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets">
<f:view> <!-- No need to define. Added implicitly here in ComponentTree -->
<h:head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8"/>
</h:head>
<h:body>
<h:outputText value="#{hello.message}"/>
</h:body>
</f:view>
</html>
Итак, если вы получить UIViewRoot с помощью FacesContext.getCurrentInstance().getViewRoot()
и попросить своих детей (.getChildren()
), вы получите список из 4 элементов:
UIInstructions
: визуализирует <html>
открывающий тег
UIOutput
: это номер <h:head>
. Задать getChildren
еще раз, чтобы получить UIOutput
для <meta>
тег
HtmlBody
: это, по-видимому, h:body
.Спросите getChildren
получить <h:outputText>
UIInstructions
: оказывает </html>
закрывающий тег
добавить детей к ним прямо с управляемым боба
Да, в общем, вы можете использовать ManagedBeans манипулировать UIComponentTree (например, добавьте элемент, затем перезагрузите страницу, чтобы показать его). Однако рассмотрите JSF lifecycle и порядок обработки (вы, например, не можете добавить ребенка в качестве первого элемента в тело во время фазы обработки, потому что элементы уже обработаны). Образец для добавления нового элемента в теле:
List<UIComponent> viewRootChildren = FacesContext.getCurrentInstance().getViewRoot().getChildren();
for(UIComponent child : viewRootChildren){
if(child instanceof HtmlBody){
HtmlOutputText newText = new HtmlOutputText();
newText.setValue("added dynamically");
child.add(newText);
}
}
Вы можете создать все такие элементы в XHTML и отображения/скрытия, используя переменную в управляемом фасоли –
@VikasSachdeva я не мог видеть, какие примеры; вы могли бы предоставить более подробную информацию PLS – user390525