Java JSF valueChangeListener仅在第二次尝试时作出反应?
我有JSF页面有两个下拉列表,我想加载第二个列表,其中的值基于第一个列表中选择的值。但是,“onchange”事件仅在我第二次更改选择时检测到 网页代码段:Java JSF valueChangeListener仅在第二次尝试时作出反应?,java,jsf,jakarta-ee,websphere,Java,Jsf,Jakarta Ee,Websphere,我有JSF页面有两个下拉列表,我想加载第二个列表,其中的值基于第一个列表中选择的值。但是,“onchange”事件仅在我第二次更改选择时检测到 网页代码段: <h:form id="selectRegion"> <h:selectOneMenu id="governorate" value="#{SearchView.governorate}" styleClass="mediumInput" immediate="tru
<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事件)中放入系统以了解这一点)
有人知道什么地方可能出错吗?提前谢谢!我正在使用JSF 1.1并在IBM WAS上运行,这是很久以前我最后一次使用IBM和JSF 1.1,但我隐约记得一些古老的JSF 1.1错误,它导致valueChangeListener在初始值为
null
时不会启动。我建议将初始值(value=“#{SearchView.governorate}”
后面的属性)设置为空字符串或其他值
当然,您也可以将JSF1.1升级到最新版本JSF1.1_02。它有相当多的功能性错误修复,也许它也会修复这个(和其他)问题。IBM WAS 5.x附带了一个非常早期的JSF1.1版本,其中包含了一些奇怪的bug。或者,如果您使用的是IBM WAS 6.x,那么您也可以完全转储JSF 1.1,然后使用改进得多的JSF 1.2。您可以从存档中下载JSF库。谢谢您的回复,我尝试了初始化的想法,但没有成功。。。我认为我们应该升级到JSF1.2来确定:是HTML/JS代码没有调用
submit()
,还是JSF代码只是跳过了valueChangeListener方法?作为穷人的调试,在onclick
中添加一个alert('blah')
,以排除一个和另一个,即onclick=“alert('onclick called!”);submit();“
。