【发布时间】:2012-07-05 09:22:02
【问题描述】:
我有一个<rich:popupPanel> 标记,在其中我使用<f:ajax> 事件。因此<rich:popupMenu> 也需要在其中有一个<h:from>。在我的 ajax 事件中,我需要从“主页”中获取一个值,因此我将它与相应的 :formid:elementid 模式一起列在执行列表中,但这不起作用 - 侦听器方法中的值为 null。这是代码:
<h:form id="form">
...
<h:selectOneMenu id="selectUser" value="#{usersBean.user_id}" styleClass="comboBoxes" >
<f:selectItems value="#{usersBean.myModelUsersValues}" />
<a4j:ajax event="valueChange" listener="#{usersBean.userSelected}" render="login password customer_name" execute="@this"/>
</h:selectOneMenu >
...
</h:form>
<rich:popupPanel id="popup" modal="true" autosized="true" resizeable="false">
<f:facet name="header">
<h:outputText value="Atributes" />
</f:facet>
<f:facet name="controls">
<h:outputLink value="#" onclick="#{rich:component('popup')}.hide(); return false;">
X
</h:outputLink>
</f:facet>
<h:form id="popupForm">
...
<h:selectOneListbox id="atrib_list" value="#{usersBean.atribSelect}" styleClass="comboBoxes" style="height:100px;width:100px;">
<f:selectItems value="#{usersBean.atribValues}" />
<f:ajax event="valueChange" listener="#{usersBean.atribValuesChanged}" render="child_list" execute="@this :form:selectUser"/>
</h:selectOneListbox >
...
</h:form>
</rich:popupPanel>
在usersBean.atribValuesChanged 侦听器方法中,usersBean.user_id 字段为空(没有选择的值)。如何强制执行 form:selectUser 元素,以便我可以在侦听器方法中读取它的选定值?
第二部分:
这只是顺便说一句。问题,也许我应该为此打开另一个线程。问题是当<h:selectOneListBox> 只有一个值时,它的创建更像h:selectOneMenu。这看起来很糟糕,并且当您选择它时不会触发 valueChange 事件。 <h:selectManyListBox>中不存在这个问题是bug吗?可以修复吗?
【问题讨论】:
标签: ajax jsf richfaces popuppanel