f:ajax-inside-rich:popupMenu无法从不同的表单执行组件
我有一个标签,里面我使用事件。因此,也需要有一个内部的。在我的ajax事件中,我需要从“主页”中获取一个值,因此我使用相应的:formid:elementid模式将其列在执行列表中,但这不起作用-侦听器方法中的值为null。代码如下:f:ajax-inside-rich:popupMenu无法从不同的表单执行组件,ajax,jsf,richfaces,popuppanel,Ajax,Jsf,Richfaces,Popuppanel,我有一个标签,里面我使用事件。因此,也需要有一个内部的。在我的ajax事件中,我需要从“主页”中获取一个值,因此我使用相应的:formid:elementid模式将其列在执行列表中,但这不起作用-侦听器方法中的值为null。代码如下: <h:form id="form"> ... <h:selectOneMenu id="selectUser" value="#{usersBean.user_id}" styleClass="combo
<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字段为空,没有选择的值。如何强制执行表单:selectUser元素,以便在侦听器方法中读取它的选定值
第2部分:
这只是一个顺便问一下的问题,也许我应该为这个打开另一个线程。问题是,当只有一个值时,它的创建更像一个h:selectOneMenu。这看起来很糟糕,而且当您选择valueChange事件时,它也不会被触发。这个问题不存在于中,它是一个bug吗?它是可修复的吗?这是预期的行为,您确实不能在表单之外提交任何数据 您可以在表单外重新提交JSF组件,请参阅本文,但不能将表单外的任何内容发送到服务器 因此,您可能要做的是在要发送的表单中放置一个h:INPUTHIDEN,从第一个表单的h:SELECTONE菜单中重新给它排序,然后在表单上隐藏发送idUserHidden:
<h:form id="form">
...
<h:selectOneMenu id="selectUser" value="#{usersBean.user_id}"
styleClass="comboBoxes" >
<f:selectItems value="#{usersBean.myModelUsersValues}" />
<!-- rerender the hidden input also: -->
<a4j:ajax event="valueChange" listener="#{usersBean.userSelected}"
render="login password customer_name :idUserHidden" execute="@this"/>
</h:selectOneMenu >
...
</h:form>
....
<h:form>
....
<!-- hidden input to submit the same value of :selectUser -->
<h:inputHidden id="idUserHidden" value="#{usersBean.user_id}" />
<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 idUserHidden"/>
</h:selectOneListbox >
</h:form>
谢谢,这很有效。第二部分你有答案吗?到目前为止,我只能覆盖selectOneListBox的大小atribute,如果usersBean.atribSelect.size<2,则将其设置为2。不客气!对不起,我本人从未使用过h:selectOneListBox。你应该问另一个问题,这样它会得到更多的关注。