Во-первых, вы не должны помещать модули макета в форму, вместо этого помещайте формы в модули макета.
Другая проблема заключается в том, что у вас есть вложенные формы, у вас не должно быть вложенных форм.
Ваша форма <h:form id="from"
не в том месте.Вы должны переместить его внутрь <p:layoutUnit position="west"
:
<p:layoutUnit position="west" size="250" header="Tree" resizable="true" closable="flase" collapsible="true">
<h:form id="form">
<p:tree id="tree" value="#{treeBean.root}" selection="#{treeBean.selectedNode}" var="node" selectionMode="single" dynamic="true" cache="false" >
<p:ajax listener="#{treeBean.onNodeSelect}" update=":myForm" event="select"/>
<p:treeNode>
<h:outputText value="#{node}"/>
</p:treeNode>
</p:tree>
</h:form>
</p:layoutUnit>
Также рассмотрите возможность использования h:panelGroup
вместо <h:form id="myForm"
и обновите группу панелей, потому что там вам не нужен h:form
:
<p:layoutUnit position="center">
<h:panelGroup id="centerContentPanel">
<ui:include src="${treeBean.selectedNode.name}.xhtml"/>
</h:panelGroup>
</p:layoutUnit>
И обновить эту группу панелей:
<p:ajax listener="#{treeBean.onNodeSelect}" update="centerContentPanel" event="select"/>