java - p :ajax listener don't work properly with p:selectOneMenu

标签 java ajax primefaces

我正在使用 JSF 和 PrimeFaces。 在尝试使用 PrimeFaces 组件 p:selectOneMenu 时,我发现了一些问题。

<h:form>
    <p:panel header="Select an offer and the date for the report" style="margin-bottom: 10px">
        <h:panelGrid columns="2" cellpadding="5px">
            <p:outputLabel for="offer" value="Offer: "/>
            <p:selectOneMenu id="offer" value="#{partnerSales.selectedOffer}" style="width: 200px;">
                <p:ajax event="change" update="year" listener="#{partnerSales.onOfferChange}"/>
                <f:selectItem itemLabel="Select an offer: " noSelectionOption="true" itemValue=""/>
                <f:selectItems value="#{partnerSales.allOffers}"/>
            </p:selectOneMenu>

            <p:outputLabel for="year" value="Year: "/>
            <p:selectOneMenu id="year" value="#{partnerSales.selectedYear}" style="width: 200px">
                <p:ajax update="month"/>
                <f:selectItem itemLabel="Select a year: " itemValue="" noSelectionOption="true"/>
                <f:selectItems value="#{partnerSales.years}"/>
            </p:selectOneMenu>

            <p:outputLabel for="month" value="Month: "/>
            <p:selectOneMenu id="month" value="#{partnerSales.selectedMonth}" style="width: 200px">
                <f:selectItem itemLabel="Select a month: " itemValue="" noSelectionOption="true"/>
                <f:selectItems value="#{partnerSales.months}"/>
            </p:selectOneMenu> 
        </h:panelGrid>

        <p:separator/>

        <p:commandButton value="Send" actionListener="#{partnerSales.displayData}"/>
    </p:panel>
</h:form>

所以,我有一个 selectOneMenu 组件,它有几个选项。默认情况下,第一项是“选择报价:”,值为空,不用于选择。此外,我使用监听器来捕获值更改以更新下一个组件。但是,当我尝试更改这些值时,什么也没有发生。但是,当我从下拉菜单中选择第一项时,监听器会打印出它已被访问。错误在哪里?我无法理解这种奇怪的行为)

最佳答案

感谢@lastresort!当我使用 SelectOneMenu 组件作为值时,我添加了自定义对象。

要在此类组件中使用自定义对象,您需要添加 custom converter .

关于java - p :ajax listener don't work properly with p:selectOneMenu,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42571127/

相关文章:

java - 如何从另一个线程更改处理中的背景和变量

java - 在 Java/JavaScript 中解析 ISO-8601 持续时间

jQuery 获取属性

jsf - 从 Primeface 的 p :fileUpload in same form without refresh 显示 UploadedFile 内容

jsf 用js渲染组件

java - Spring Boot 验证通过 ObjectMapper GET @RequestParam 映射的 JSON

java - 如何在 Java 代码创建的 SQL 脚本文件中将 Java byte[] 转换为 MySQL BLOB

javascript - jQuery 表单插件

javascript - Php/Jquery/Ajax : On Accordian Click, 它在 Accordion 内的页面中加载内容

jsf - 带 table/ui 的垂直单选按钮 :repeat