2011-06-18 14 views
3

私はprimefacesレイアウトコンポーネントを使用していて、中央と右のlayoutUnitを持っています。私は最初のページを読み込むときにデフォルトの右のレイアウトを折りたたんだ状態にするため、右のlayoutUnitを展開するリンク/ボタンを中央のレイアウトに配置したいと思います。私は正しいlayoutUnitでブール式を使用しています。私はリンクからそれを更新します。正しいlayoutUnitが私のリンクから更新されたajaxedを取得しないことを除いて、すべてが機能します。ページをリフレッシュすると、正しいlayoutUnitが展開されます。Primefaces条件付きで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 

答えて

1

fullPage=true<p:layout>コンポーネントを使用する方法について、次のフォーラムの記事を参照してください。属性。

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> 
1

問題は、レイアウトを更新していないということかもしれないです。あなたは時間を与えることができます。フォーム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>