【问题标题】:Conditionally enable/disable p:selectManyMenu based on h:selectOneRadio value根据 h:selectOneRadio 值有条件地启用/禁用 p:selectManyMenu
【发布时间】:2014-10-16 07:43:46
【问题描述】:

我有 2 个单选按钮,一个启用和禁用。如果我单击启用,则应禁用所有 selectmanymenu 标签,反之亦然。请你帮助我好吗。我附上了下面的代码。

单选按钮代码:

<div>
    <h:selectOneRadio value="#{userData.data}" layout="pageDirection" id="filterGroup"
     required="true"  styleClass="control-group searchFilterRow searchFilterFont floatL" >
        <f:selectItem itemValue="1" itemLabel="By Part" />
        <f:selectItem itemValue="0" itemLabel="By Filter" />
    </h:selectOneRadio>
    </div> 

    <div class="floatL filterSection">
    <h:panelGrid columns="2" style="margin-bottom:10px" cellpadding="5"
            columnClasses="label, value">

            <p:outputLabel styleClass="disblock" for="display11" value="Vehicle Programs:" />
            <div class="controls">
                <p:selectManyMenu id="display11"
                    value="#{selectManyView.selectedThemes}" converter="themeConverter"
                    var="t" filter="true" filterMatchMode="contains"
                    showCheckbox="true" styleClass="selectManyContainer"  disabled="#{(userData.data==1)}" >
                    <f:selectItems value="#{selectManyView.themes}" var="theme"
                        itemLabel="#{theme.displayName}" itemValue="#{theme}" />

                    <p:column>
                        <h:outputText styleClass="ui-theme ui-theme-#{t.name}" />
                    </p:column>

                    <p:column>
                        <h:outputText value="#{t.displayName}" />
                    </p:column>
                </p:selectManyMenu>
            </div>
        </h:panelGrid>
</div>
        <div class="floatL  filterSection">
        <h:panelGrid columns="2" style="margin-bottom:10px" cellpadding="5"
            columnClasses="label, value">


            <p:outputLabel for="advanced" value="CSS:" />
            <div class="controls">
                <p:selectManyMenu id="advanced"
                    value="#{selectManyView.selectedThemes}" converter="themeConverter1"
                    var="t" filter="true" filterMatchMode="contains"
                    showCheckbox="true" styleClass="selectManyContainer" disabled="#{(userData.data==1)}"  >
                    <f:selectItems value="#{selectManyView.themes}" var="theme"
                        itemLabel="#{theme.displayName}" itemValue="#{theme}"  />

                    <p:column>
                        <h:outputText styleClass="ui-theme ui-theme-#{t.name}" />
                    </p:column>

                    <p:column>
                        <h:outputText value="#{t.displayName}" />
                    </p:column>
                </p:selectManyMenu>
            </div>
        </h:panelGrid>

        <p:separator />

        </div>

豆码:

package radioButton;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

@ManagedBean(name = "userData", eager = true)
@SessionScoped

    public class UserData implements Serializable {

        private static final long serialVersionUID = 1L;

        public String data = "1";

        public String getData() {
            return data;
        }

        public void setData(String data) {
            this.data = data;
        }
    }

【问题讨论】:

    标签: jsf primefaces toggle selectoneradio selectmanymenu


    【解决方案1】:

    您需要向您的 selectOneRadio 添加一个 ajax 组件来刷新 selectManyMenu 的组件。

    <h:selectOneRadio value="#{userData.data}" layout="pageDirection" id="filterGroup"
     required="true"  styleClass="control-group searchFilterRow searchFilterFont floatL" >
        <f:selectItem itemValue="1" itemLabel="By Part" />
        <f:selectItem itemValue="0" itemLabel="By Filter" />
        <f:ajax render="display11 advanced"/> //id's of the selectManyMenu's
    </h:selectOneRadio>
    

    如果您打算改用&lt;p:selectOneRadio&gt; 组件,请使用&lt;p:ajax update="display11 advanced"/&gt;

    【讨论】:

    • 提示:您也可以通过 jquery-selectors 进行搜索。在这种情况下,通过 update="@(.controls)" 更新所有 controls- 面板可能会很有用。这仅适用于 jsf 组件,例如 h:panel....
    • 我已经尝试过了,但我仍然没有得到解决方案
    猜你喜欢
    • 1970-01-01
    • 2015-01-02
    • 2013-01-28
    • 2013-04-03
    • 1970-01-01
    • 2021-10-06
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多