我有一個列表框,我希望捕獲選擇中的更改以便根據它填充另一個。我試着按以下方式:在不提交表格的情況下更改監聽器
<h:selectOneMenu id="comunitaValle" value="#{struttura.nomeComunitaDiValle}"
onchange="submit()" valueChangeListener="#{struttura.getComuniInComunita}">
<f:selectItems value="#{struttura.comunitaValleList}" />
</h:selectOneMenu>
它工作正常,但事實證明,在此頁面中有標記爲
required="true"
,並在表單提交,當我得到我的錯誤的其他參數控制這些字段已被設置的消息。如何避免提交整個表單以避免這種情況發生,並且在2個列表框中仍然具有正確的行爲?
編輯:根據https://stackoverflow.com/a/4802483/2492962
我已經達到了一種解決方案(不知道這是否是最好的):
<h:selectOneMenu id="comunitaValle" value="#{struttura.nomeComunitaDiValle}"
valueChangeListener="#{struttura.getComuniInComunita}" immediate="true">
<a4j:support event="onchange" reRender="cap"/>
<f:selectItems value="#{struttura.comunitaValleList}" />
</h:selectOneMenu>
它可被罰款? JBoss顯示一條警告消息:
INFO [lifecycle] WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
但刷新看起來很好。
是否使用JSF-2或工具包,提供AJAX的功能?因爲這聽起來像它的標準用例。 – mabi
是的,但我無法做到這一點。任何建議? – AnPe
上述修正:OP根本沒有使用JSF 2.x。 – BalusC