tags:

views:

84

answers:

1

Hello all,

I have JSF page has two drop down lists and I want to load the second one with values based on what was chosen in the first one. However, the "onchange" event is only detected the second time I change the selection!

Web page Code snippet:

<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>

The problem is that goverValueChanged(ValueChangeEvent event) is invoked only when I modify the value of the governorate for the second time but not for the first time (I put system out in goverValueChanged(ValueChangeEvent event) to know that).

Does anyone have an idea regarding what might be wrong? Thanks in advance! I am using JSF 1.1 and run on IBM WAS

+1  A: 

It has been a long time ago I fighted with IBM and JSF 1.1 for last time, but I vaguely recall some ancient JSF 1.1 bug which caused that the valueChangeListener won't be fired when the initial value is null. I'd suggest to set the initial value (the property behind value="#{SearchView.governorate}") to an empty string or to something else.

You can of course also upgrade JSF 1.1 to the latest build JSF 1.1_02. It has pretty a lot of functional bugfixes, maybe it will also fix this (and other) problems. IBM WAS 5.x namely ships with a very early version of JSF 1.1 which is cluttered of some odd bugs like that. Or maybe you're using IBM WAS 6.x, then you can also dump JSF 1.1 altogether and go for the much improved JSF 1.2. You can download JSF libraries from the archives right here.

BalusC
Thanks for your reply, I tried the initialization idea but it didn't work ... I think we should upgrade to JSF 1.2
Moro
To be sure: is it the HTML/JS code which does not call `submit()`, or is it the JSF code which simply simply skips the valueChangeListener method? As poor man's debugging, add an `alert('blah')` to `onclick` to exclude one and other, i.e. `onclick="alert('Onclick called!'); submit();"`.
BalusC