我正在使用 PrimeFaces 3.4 。我在左侧布局单元中使用了p:tree
的p:layout,以及中央单元中的面板列表。选择/取消选择树上的节点后,我正在渲染/取消渲染面板。一般结构如下:
<p:layoutUnit position="west" minSize="150" size="300">
<h:form id="tree">
<p:tree id="tree" value="#{tree.root}" var="node"
selectionMode="multiple" selection="#{tree.selectedNodes}">
<p:ajax event="select" listener="#{tree.treeSelect}" process=":main" update=":main:panels"/>
<p:ajax event="unselect" listener="#{tree.treeUnselect}" process=":main" update=":main:panels"/>
<p:treeNode>
<h:outputText value="#{node.title}" />
</p:treeNode>
</p:tree>
</h:form>
</p:layoutUnit>
<p:layoutUnit position="center" header="Panels" styleClass="noscroll">
<h:form id="main">
<p:outputPanel id="panels" styleClass="center-panels">
<!-- here go the panels -->
</p:outputPanel>
</h:form>
</p:layoutUnit>
但面板包含输入字段。我注意到,单击树后输入字段被重置,所以我添加了进程attribute
。我尝试过使用:main
,:main:panels
,@all
,但没有一个功能正常。
如何正确使用该方案?当您使用p:layout
时,PrimeFaces错误(一个功能错误)不允许使用单个表单,至少这在文档中有说明。使用多种形式,我正在丢失数据。
答案 0 :(得分:-1)
这对我有用:
<p:layoutUnit position="west" header="Opciones" size="175">
<h:form id="form1">
<p:panelMenu style="width:200px">
<p:submenu label="Clientes" >
<p:menuitem value="Adicionar" update=":form2" actionListener="# {templateMB.templateAddCliente}" />
<p:menuitem value="Buscar"/>
<p:menuitem value="Listado"/>
<p:menuitem value="Editar"/>
</p:submenu>
<p:submenu label="Contratos">
<p:menuitem value="Adicionar" icon="ui-icon-close"/>
</p:submenu>
<p:separator/>
<p:submenu label="Suplementos" >
<p:menuitem value="Adicionar" icon="ui-icon-signal"/>
</p:submenu>
</p:panelMenu>
</h:form>
</p:layoutUnit>
<p:layoutUnit position="center">
<h:form id="form2">
<ui:include src="#{templateMB.centerTemplate}" />
</h:form>
</p:layoutUnit>