JSF valueChangeListener只对第二次尝试做出反应?

时间:2010-09-16 10:11:17

标签: java jsf java-ee websphere

我有JSF页面有两个下拉列表,我想根据第一个中选择的值加载第二个下拉列表。但是,只有在我第二次更改选择时才会检测到“onchange”事件!

网页代码段:

<h:form id="selectRegion">
    <h:selectOneMenu id="governorate"
            value="#{SearchView.governorate}"
            styleClass="mediumInput" immediate="true"
            valueChangeListener="#{SearchView.goverValueChanged}"
            onchange="submit();">
            <f:selectItems value="#{SearchView.goverItemsList}" id="govItems" />
    </h:selectOneMenu>

    <h:selectOneMenu id="district"
            value="#{SearchView.district}"
            styleClass="mediumInput">
            <f:selectItems value="#{SearchView.districtItemsList}" id="distItems" />
    </h:selectOneMenu>
</h:form>

<h:form id="SearchFor">
<hx:commandExButton
    id="button1" styleClass="btn" type="submit"
    value="Search" action="#{SearchView.searchAction}"
    onclick="document.getElementById('selectRegion').submit();">
</hx:commandExButton>
</h:form>

问题是仅当我第二次修改省的值而不是第一次修改省的值时才调用goverValueChanged(ValueChangeEvent事件)(我把系统输出到goverValueChanged(ValueChangeEvent事件)来知道)。 / p>

有没有人知道可能出现什么问题?提前致谢!我正在使用JSF 1.1并在IBM WAS上运行

1 个答案:

答案 0 :(得分:1)

很久以前我曾与IBM和JSF 1.1进行过最后一次交流,但我隐约记得一些古老的JSF 1.1错误导致当初始值为null时不会触发valueChangeListener 。我建议将初始值(value="#{SearchView.governorate}"后面的属性)设置为空字符串或其他内容。

您当然也可以将JSF 1.1升级到最新版本的JSF 1.1_02。它有很多功能错误修正,也许它也会修复这个(和其他)问题。 IBM WAS 5.x即附带了JSF 1.1的早期版本,其中包含了一些奇怪的错误。或者你可能正在使用IBM WAS 6.x,那么你也可以完全转储JSF 1.1并转向改进的JSF 1.2。您可以从档案right here下载JSF库。