【问题标题】:Is panelGroup allowed inside selectOneMenu?selectOneMenu 中是否允许使用 panelGroup?
【发布时间】:2013-03-06 15:48:27
【问题描述】:

这种panelGroupselectOneMenu 中的“嵌套”在JSF 中是否允许?

<p:selectOneMenu>
    <f:selectItem itemValue="MOUNT" itemLabel="Local directory" />
    <f:selectItem itemValue="AS3" itemLabel="Amazon S3" />
    <f:selectItem itemValue="FTP" itemLabel="FTP site" />
  <h:panelGroup rendered="#{ConfigBean.rackspace}">
    <f:selectItem itemValue="RCF" itemLabel="RackspaceCloud"/>
  </h:panelGroup>     
</p:selectOneMenu>

第 4 个selectItem 永远不会被渲染,无论ConfigBean.rackspacetrue

我也试过p:outputPanel而不是h:panelGroup

【问题讨论】:

    标签: jsf primefaces


    【解决方案1】:

    您可以将其包装在 c:if 中,但如果您更改 bean 中的 rackspace,它不会重新呈现选择项。

    <c:if test="#{ConfigBean.rackspace}">
        <f:selectItem itemValue="RCF" itemLabel="RackspaceCloud"/>
      </c:if>  
    

    请记住,JSTL 组件仅在创建视图期间执行,因此您无法添加 &lt;f:selectItem itemValue="RCF" itemLabel="RackspaceCloud"/&gt; 根据您的 bean 中的条件进行后续 POST。

    【讨论】:

    • 您遇到错误了吗? bean创建后ConfigBean.rackspace的值是多少?
    • 非常重要:声明JSTL核心taglib如下&lt;html xmlns:c="http://java.sun.com/jsp/jstl/core"&gt;。不是&lt;html xmlns:c="http://java.sun.com/jstl/core"&gt;!现在可以了。
    【解决方案2】:

    您不能为此使用&lt;h:panelGroup...而且您最好不要为此使用&lt;c:if(INMO 是矫枉过正)

    而只是使用f:selectItems 并在服务器端有条件地加载它...

    【讨论】:

    • 例如:mkyong.com/jsf2/jsf-2-listbox-example 你也可以使用数组列表,有条件地在 @PostConstruct 中填充它(而不是 getter...)
    • 好的,知道了。但是,此解决方案对我没有好处,因为我还有其他要排除的组件,而不仅仅是这个。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 2012-08-04
    • 2010-09-21
    • 1970-01-01
    相关资源
    最近更新 更多