根据<p:selectoneradio>的选择值切换<p:panel> </p:selectoneradio> </p:panel>

时间:2012-12-11 02:44:23

标签: jsf primefaces

我想在用户选择特定单选按钮时切换隐藏面板。 使用最新版本的primefaces。

例如:

<p:panel id="panel1" visible="false" widgetVar="firePanel" closable="true" toggleable="true">
 hello
</p:panel>

<p:selectOneRadio value="#{formBean.selectedOptions}" layout="pageDirection">
  <f:selectItem itemLabel="Option 1" itemValue="opt1" />
  <f:selectItem itemLabel="Option 2" itemValue="opt2" />
  <f:selectItem itemLabel="Option 3" itemValue="opt"/>                           
</p:selectOneRadio>

我想实现类似的功能,但是当点击RadioButton3时,不使用commandButton

<p:commandButton id="but" value="Show" onclick="firePanel.show();"/>

这甚至可能吗? 谢谢!

1 个答案:

答案 0 :(得分:5)

采取以下步骤:

  1. 在您的支持bean中声明一个boolean变量来管理面板的状态并将其绑定到面板的visible属性

    boolean panelIsVisible;
    //getter and setter
    
    <p:panel id="panel1" visible="#{formBean.panelIsVisible}" widgetVar="firePanel" closable="true" toggleable="true">
    
  2. 定义一个方法,根据selectedOptions

    的值切换可见性布尔值
    public void changePanelState(){
    
        //set panelIsVisible to true or false based on whatever conditions you choose
    
    }
    
  3. <p:ajax/>事件添加到<p:selectOneRadio/>以在该菜单上的任何选项上触发ajax事件

    <p:selectOneRadio value="#{formBean.selectedOptions}" layout="pageDirection">
      <f:selectItem itemLabel="Option 1" itemValue="opt1" />
      <f:selectItem itemLabel="Option 2" itemValue="opt2" />
      <f:selectItem itemLabel="Option 3" itemValue="opt"/> 
      <p:ajax listener="#{formBean.changePanelState}" update="panel1"/>                          
    </p:selectOneRadio>
    

    这假设panel1与selectOneRadio位于同一<h:form/>