【发布时间】:2013-12-09 21:24:03
【问题描述】:
我有一个列表框,我想捕捉选择的变化,以便根据它填充另一个列表框。我尝试了以下方式:
<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 功能的工具包?因为这听起来像是它的标准用例。
-
是的,但我无法做到这一点。有什么建议吗?
-
以上更正:OP 根本没有使用 JSF 2.x。
-
关于您的编辑:您是否尝试在
getComuniInComunita中显示 FacesMessages? -
getComuniInComunita 根据第一个中的选择项填充另一个下拉列表。此处不应显示任何 FacesMessage。我在这个页面里有一些FaceMessages,表明还有一些其他的字段还没有填写。这些是我在第一篇文章中试图解释的“我的错误消息”,我不希望在选择下拉列表中的项目后显示这些消息。
标签: ajax jsf richfaces jsf-1.2