【问题标题】:Show/Hide components in primefaces 5/JSF 2.2 [duplicate]在primefaces 5 / JSF 2.2中显示/隐藏组件[重复]
【发布时间】:2016-05-11 05:47:57
【问题描述】:

我认为这很容易,但我就是不明白。我有一个下拉菜单,根据选择,我应该能够根据布尔值显示/隐藏另一个下拉菜单。默认情况下,布尔值为 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,但未呈现组件。

【问题讨论】:

标签: jsf-2 primefaces


【解决方案1】:

我认为问题可能出在您实现 p:ajax 组件的方式上。见p:ajax listener method not invoked的cmets。

【讨论】:

  • 感谢您的建议。我尝试过这个。尽管布尔值是真的,但仍然没有被渲染。
【解决方案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 关于这个。

【讨论】:

  • 谢谢,其实你是对的。这行得通。
  • 很高兴可以工作:)
  • @YouYou:许多这些基本问题在 StackOverflow 中都有重复。请搜索它们并将它们标记为此类。它保持如此干净。
  • @Kukeltje 好的,我认为你是对的
  • @YouYou,酷...谢谢
猜你喜欢
  • 2011-06-12
  • 2016-03-10
  • 1970-01-01
  • 1970-01-01
  • 2011-04-11
  • 2012-05-14
  • 2014-07-31
  • 2014-02-08
相关资源
最近更新 更多