Primefaces有条件地扩展LayoutUnit

时间:2011-06-18 21:27:21

标签: primefaces

我正在使用primefaces布局组件,并且有一个center和right layout。我想在中心布局中有一个链接/按钮来扩展正确的layoutUnit,因为我在第一次加载页面时将正确的布局默认为折叠状态。我在右侧layoutUnit上使用布尔表达式,并从链接更新它。一切正常,除了正确的layoutUnit没有从我的链接更新ajaxed。如果我刷新页面,则展开正确的layoutUnit。

页:

    <h:form prependId="false"> 
        <p:layout fullPage="true">  
            <p:layoutUnit id="right" position="right" width="350" header="Marker Details" resizable="true" closable="true" collapsible="true" collapsed="#{mapBean.rightCollapsed}">  
                <h:outputText value="#{mapBean.text}" />  
            </p:layoutUnit>
            <p:layoutUnit position="center">
                <p:commandLink actionListener="#{mapBean.showDetail}" update="right" value="Expand Right Layout"/>
            </p:layoutUnit>
        </p:layout>
    </h:form> 

豆:

public class MapBean implements Serializable {
     private boolean rightCollapsed=true;
     public void showDetail(ActionEvent e){
        rightCollapsed=false;
     }
    //getter/setter for rightCollapsed

2 个答案:

答案 0 :(得分:1)

问题可能是您没有更新布局。您可以将 h:form 设为 ID ,并使用此ID替换命令按钮的更新 ID名称,如下所示:

<h:form id="layoutForm" prependId="false">
<p:layout fullPage="true">  
            <p:layoutUnit id="right" position="right" width="350" header="Marker Details" resizable="true" closable="true" collapsible="true" collapsed="#{mapBean.rightCollapsed}">  
                <h:outputText value="#{mapBean.text}" />  
            </p:layoutUnit>
            <p:layoutUnit position="center">
                <p:commandLink actionListener="#{mapBean.showDetail}" update="layoutForm" value="Expand Right Layout"/>
            </p:layoutUnit>
        </p:layout> 
</form>

答案 1 :(得分:1)

请参阅以下论坛帖子,了解如何将<p:layout>组件与fullPage=true属性结合使用。

http://primefaces.prime.com.tr/forum/viewtopic.php?f=3&t=4766

您不能以这样的形式包装布局组件,每个<p:layoutUnit>都需要自己的嵌套表单。通过设置表单ID并正确引用组件ID,您仍然可以update其他表单的组件,如另一个答案所示。尝试这样的事情:

<p:layout fullPage="true">  
  <p:layoutUnit id="right" position="right" width="350" header="Marker Details" resizable="true" closable="true" collapsible="true" collapsed="#{mapBean.rightCollapsed}"> 
    <h:form id="rightForm" prependId="false">
      <h:outputText id="mapBeanTextOutputText" value="#{mapBean.text}" />
    </h:form>
  </p:layoutUnit>
  <p:layoutUnit position="center">
    <h:form id="centerForm" prependId="false">
      <p:commandLink actionListener="#{mapBean.showDetail}" update="mapBeanTextOutputText" value="Expand Right Layout"/>
    </h:form>
  </p:layoutUnit>
</p:layout>