我有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上运行
答案 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库。