环境:Tomcat 6,jsf 2.0,prime faces 2.2.1,chrome explorer
我想点击左侧展开树中的“ViewDetail”链接,并显示产品的详细信息。但是下面的代码不起作用。 然后我将属性ajax =“false”添加到链接,似乎工作。但位于页面左侧的“p:treeTable”是 也刷新和崩溃。那么我该怎么做呢:点击左侧展开的树节点上的链接,在右侧部分显示信息 页面,并保持左扩展树节点仍然扩展。
<h:form id="BizTypeTreeTableForm" >
<p:layout fullPage="true">
<p:layoutUnit id="left" position="left" scrollable="true" width="350" resizable="true" closable="false" collapsible="true" minWidth="250" >
<p:treeTable id="BizTypeTreeTable" value="# {treeTableController.root}" var="treeTable">
<p:column>
<f:facet name="header">ProductName</f:facet>
<h:outputText value="#{treeTable.TYPENAME.value }" />
</p:column>
<p:column style="width:5%">
<f:facet name="header">Action</f:facet>
<p:commandLink value="ViewDetail" update="content" action="#{treeTableController.showDetail}">
</p:commandLink>
</p:column>
</p:treeTable>
</p:layoutUnit>
<p:layoutUnit id="center" rendered="true" position="center" style="text-align:left;" scrollable="true" >
<h:outputText value="Please click the left tree node" rendered="# {allTabManager.productObject.TypeNo.value eq null}"/>
<div id="content" class="ui-widget">
<div class="post">
<ui:insert name="content_tab" >...</ui:insert>
</div>
</div>
</p:layoutUnit>
</p:layout>
</h:form>
答案 0 :(得分:6)
update
必须指向树中的真实JSF组件,而不是纯HTML元素。
替换
<div id="content" class="ui-widget">
通过
<h:panelGroup layout="block" id="content" class="ui-widget">
layout="block"
的小组将呈现<div>
而不是<span>
。
答案 1 :(得分:0)
我认为您对ID的引用不正确,因为div
和p:layout
不是同一级别。
但您可以尝试使用update=":content"
获取绝对ID,也可以更新整个p:layoutUnit
:
<p:commandLink value="ViewDetail"
update="center"
action="#{treeTableController.showDetail}">