使用渲染显示多个selecitems的JSF组件

时间:2018-04-30 22:39:49

标签: jsf primefaces selectonemenu rendered-attribute

<p:fieldset styleClass="weightTextBox">
            <p:selectOneMenu id="detectionSelector" value="#{ngs.detectionMode}">
                <f:selectItem itemValue="SYBR" itemLabel="SYBR" />
                <f:selectItem itemValue="NONE" itemLabel="None" />
                <f:selectItem itemValue="SYBR_GREEN" itemLabel="Sequencing" />
                <f:selectItem itemValue="PROBE" itemLabel="Probe" />
                <p:ajax event="change" update="@form" render="@form"/>
            </p:selectOneMenu>
            </p:fieldset>

我有多个选择项,而三个值NONE,SYBR,SYBR_GREEN具有相同的用法。 我想做的是

<ui:fragment rendered="#{ngs.detectionMode ne 'SYBR_GREEN' or ngs.detectionMode ne 'NONE' or ngs.detectionMode ne 'SYBR'}">

虽然这种方式有效但我需要所有3个选项。

<ui:fragment rendered="#{ngs.detectionMode ne 'SYBR_GREEN'}">

我尝试了多种方法,但都没有。

<ui:fragment rendered="#{(ngs.detectionMode ne 'SYBR_GREEN') or (ngs.detectionMode ne 'NONE') or (ngs.detectionMode ne 'SYBR')}">


<ui:fragment rendered="#{ngs.detectionMode ne 'SYBR_GREEN' or 'NONE' or 'SYBR'}">

1 个答案:

答案 0 :(得分:0)

我认为您正在寻找在{strong>'PROBE'选项被选中时ui:fragment仅>呈现的标准。

在这种情况下,您需要定义exclusive条件(AND)和非包含条件(OR),例如失败的尝试。

所以,例如,而不是

<ui:fragment rendered="#{(ngs.detectionMode ne 'SYBR_GREEN') or (ngs.detectionMode ne 'NONE') or (ngs.detectionMode ne 'SYBR')}">

你应该使用

<ui:fragment rendered="#{(ngs.detectionMode ne 'SYBR_GREEN') and (ngs.detectionMode ne 'NONE') and (ngs.detectionMode ne 'SYBR')}">

另请注意,p:ajax组件没有render属性。