2016-03-08 68 views
1

在選擇項目<p:selectOneRadio>時,我想顯示<p:panel>。它在第一次選擇時起作用,但在ajax調用後它停止工作。在<p:selectOneRadio>更改時切換<p:面板可見性>

<p:selectOneRadio id="console" value="#{myBean.membre}"> 
    <f:selectItem itemLabel="a" itemValue="false" /> 
    <f:selectItem itemLabel="b" itemValue="true" /> 
    <p:ajax update="panel2,panel1" /> 
</p:selectOneRadio> 
<p:panel id="panel1" visible="#{myBean.membre == false}" 
    closable="true" toggleable="true"> 
    <ui:include src="a.xhtml" /> 
</p:panel> 
<p:panel id="panel2" visible="#{myBean.membre == true}" 
    closable="true" toggleable="true"> 
    <ui:include src="b.xhtml" /> 
</p:panel> 
+0

你有沒有檢查過myBean的'membre'值是否從true變爲false,選擇'a'或'b'單選按鈕反之亦然? – pleft

+0

它改變但它在選擇項目時沒有調用 – user3070142

+0

您使用的PrimeFaces版本是什麼? –

回答

0

在PrimeFaces 4.0上,我必須從面板中刪除可關閉的屬性,然後才能切換可見性。我還添加了使用表單域時總是需要的表單。

這是我工作的解決方案:

<h:form id="testForm"> 
    <p:selectOneRadio id="console" value="#{myBean.membre}"> 
    <f:selectItem itemLabel="a" itemValue="false" /> 
    <f:selectItem itemLabel="b" itemValue="true" /> 
    <p:ajax update="panel2,panel1" /> 
    </p:selectOneRadio> 
    <p:panel id="panel1" visible="#{not myBean.membre}" toggleable="true"> 
     test 111 
    </p:panel> 
    <p:panel id="panel2" visible="#myBean.membre}" toggleable="true"> 
    test 222 
    </p:panel> 
</h:form> 

爲什麼與可視屬性的可封閉的屬性衝突,我不知道。這可能是一個錯誤或未計劃的組合。

+0

我已經把代碼放在其他頁面上,它運行良好,但是當我用ui調用它時:include在其他頁面中,ajax停止工作!任何想法? – user3070142

+0

其確定,問題已解決,我已將我的bean更改爲@SessionScoped(它是@ViewScoped) – user3070142

相關問題