List selectOneMenu中的JSF侦听器

List selectOneMenu中的JSF侦听器,list,jsf,selectonemenu,List,Jsf,Selectonemenu,我有一个带有一些产品的SelectOne菜单项。其中一些产品不可用,因此在您单击“添加”按钮后,应禁用该按钮,并显示一些消息,表示抱歉,您选择的产品当前不可用。我不知道如何做到这一点。尝试了侦听器、ajax,但仍然一无所获 这是我的JSF页面的许多版本之一: <h:form> <h:selectOneMenu value="#{productBean.productName}"> <f:selectItems

我有一个带有一些产品的SelectOne菜单项。其中一些产品不可用,因此在您单击“添加”按钮后,应禁用该按钮,并显示一些消息,表示抱歉,您选择的产品当前不可用。我不知道如何做到这一点。尝试了侦听器、ajax,但仍然一无所获

这是我的JSF页面的许多版本之一:

<h:form>
            <h:selectOneMenu value="#{productBean.productName}">
                <f:selectItems id ="other" value="#{productBean.other}" var="other" itemValue="#{ordersBean.productName}" itemLabel="#{other.name}" />
                <f:ajax listener="#{productBean.valueChanged}" />
            </h:selectOneMenu>
            <h:commandButton value ="Dodaj do zamówienia" rendered="#{productBean.available}"/>
                    <h:outputLabel id="orderSummary"/>
        </h:form>
豆子是相当标准的。我只需要一个如何做到这一点的线索,也许我自己就能做到


提前感谢。

以下是一种方法:

在AJAX侦听器中,您可以检查产品是否可用,并相应地设置bean字段,或者为组件添加消息。 在视图中引入一个将向用户保存消息的组件,例如使用{bean.available?:'Sorry,out-of-stock'}值,或者将其包含在中,并让该组件具有呈现属性,或者在视图中的某个位置附加/附加。 指定要在标记的render属性中呈现的消息持有者的id。
它帮助我成功地使用selectOneMenu上的ajax侦听器。谢谢,不客气!查看后续问题的答案,了解更多详细信息。