如何使用primefaces的p:commandLink刷新页面的引用部分?

时间:2011-03-23 05:40:18

标签: jsf layout primefaces commandlink

环境: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>

2 个答案:

答案 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的引用不正确,因为divp:layout不是同一级别。

但您可以尝试使用update=":content"获取绝对ID,也可以更新整个p:layoutUnit

<p:commandLink value="ViewDetail" 
               update="center" 
               action="#{treeTableController.showDetail}">