显示/隐藏primefaces中的组件5 / JSF 2.2

时间:2016-02-02 12:12:43

标签: jsf-2 primefaces

我认为这很容易,但我无法得到它。我有一个下拉菜单,根据选择,我应该能够显示/隐藏另一个基于布尔值的下拉菜单。默认情况下,布尔值为false,仅当它为true时才应呈现第二个下拉列表:

我的页面:

 <h:outputLabel value="Select Report: "/>
                                    <p:selectOneMenu value="#{daily.reportname}" id="sector"  style="width: 250px;"> 
                                        <f:selectItem itemLabel="ALL" itemValue="ALL" />
                                        <f:selectItems value="#{daily.reportType()}"/>
                                        <p:ajax  event="change" update="branchrender"  listener="#{daily.selectedReport()}" />
                                    </p:selectOneMenu>
 <h:panelGroup  id="branchrender" rendered="#{daily.showBranchDimension}">
                                        <h:outputText value="Branch" />
                                        <p:selectOneMenu value="#{accounts.branchs}" id="branch"  style="width: 250px;"> 
                                            <f:selectItem itemLabel="ALL" itemValue="ALL" />
                                            <f:selectItems value="#{dimensions.branchCode()}"/>                    
                                        </p:selectOneMenu>
                                    </h:panelGroup>

我选择的报告方法:

public void selectedReport() {
        if (reportname.startsWith("cust_")) {
            custrepname = reportname;
            useBranch = pr.getCustRepProperties(custrepname + ".bi").getProperty("bi.useBranchDim");
            showBranchDimension = useBranch.equalsIgnoreCase("true");
            System.out.println("HERE: " + showBranchDimension);
        } else {
            custrepname = null;
        }

    }

showBranchDimension是一个具有getter和setter的布尔值:

public boolean isShowBranchDimension() {
        return showBranchDimension;
    }

    public void setShowBranchDimension(boolean showBranchDimension) {
        this.showBranchDimension = showBranchDimension;
    }

我错过了什么吗? System.out.println打印为true,但组件未呈现。

2 个答案:

答案 0 :(得分:2)

您必须将呈现的组件设为rendered,因为当您向服务器提交ajax请求时,它必须存在才能将另一个容器添加到branchrender并将呈现的ID移动到它

<h:panelGroup  id="branchrender">
     <h:panelGroup   rendered="#{daily.showBranchDimension}">
                                        <h:outputText value="Branch" />
                                        <p:selectOneMenu value="#{accounts.branchs}" id="branch"  style="width: 250px;"> 
                                            <f:selectItem itemLabel="ALL" itemValue="ALL" />
                                            <f:selectItems value="#{dimensions.branchCode()}"/>                    
                                        </p:selectOneMenu>
      </h:panelGroup> 
</h:panelGroup>

See more关于此事。

答案 1 :(得分:0)

我认为问题可能与你实现p:ajax组件的方式有关。请参阅p:ajax listener method not invoked的评论。