首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueChangeListener问题

ValueChangeListener问题
EN

Stack Overflow用户
提问于 2011-05-09 09:51:41
回答 1查看 2.3K关注 0票数 0

在JSF中根据下拉列表中的值变化调用ValueChangeListener时,它调用该页面上的所有ValueChangeListner。

在valueChangeListener中有两个DataTable,而在一个下拉列表中更改值时,第二个也在执行。

代码语言:javascript
复制
<t:column id="avlId" styleClass="coltextcenteralign">
            <f:facet name="header">
                <h:panelGroup>
                    <h:outputText value="#{bundle['travelLocalAccommodation.title.availability']}" />
                    <h:outputText value="*" style="color:red" />
                </h:panelGroup>
            </f:facet>
            <t:selectOneMenu value="#{accomDtls.availability}" immediate="true"
                valueChangeListener="#{TravelProcessingBB.localAccommodationBB.setAvailableFlag}" forceid="true" id="avl"
                onchange="return availabilityAlert('#{accomDtls.prepopulatedFlag}','avl[#{table_count}]')"
                styleClass="dropDownStyle" style="width:50">
                <f:selectItem itemValue="Y" itemLabel="Yes" />
                <f:selectItem itemValue="N" itemLabel="No" />
            </t:selectOneMenu>
        </t:column>
EN

回答 1

Stack Overflow用户

发布于 2011-05-09 11:34:54

仅值更改不会自动调用valueChangeListener。你也需要提交表格。一个常用的"hack“是在form.submit()事件期间使用JavaScript调用onchange。然而,这将提交整个表单。确实,对于表单中所有更改的字段,都将触发valueChangeListener

要在JSF1.x中解决这个问题,您需要使用immediate属性来跳过所有其他表单组件的验证和组件binding,以便正确地获取/设置其他组件的值。长话短说,我曾经写过一篇文章:在JSF1.2中填充子菜单

但是,在JSF2.0中,使用<f:ajax>标记可以更容易地实现这一点。如果您确实在使用JSF2.0(您当前的问题没有说明这一点),那么如果您需要一个示例,请告诉我。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5935213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档