是否可以使用下拉菜单,还是依赖于实现ActionSource的父对象,因为f:setPropertyActionLister是?
理想情况下,我会做以下事情:
<h:selectOneMenu value="#{myCustomBean.selectedItemIndex}">
<f:selectItems value="#{adminLetterAdminBean.missingSettings}" var="n" itemValue="#{n.id}" itemLabel="#{n.name}"/>
<f:setPropertyActionListener value="42" target="#{adminLetterAdminBean.someProperty}" />
<a4j:ajax />
</rich:select>
但是这不起作用,因为h:selectOneMenu没有实现javax.faces.component.ActionSource。页面没有呈现,它给了我一个友好的堆栈跟踪来告诉我这种依赖。
在Richfaces文档中没有看到有关此约束的任何内容,我尝试了以下内容:
<h:selectOneMenu value="#{myCustomBean.selectedItemIndex}">
<f:selectItems value="#{adminLetterAdminBean.missingSettings}" var="n" itemValue="#{n.id}" itemLabel="#{n.name}"/>
<a4j:param assignTo="#{adminLetterAdminBean.someProperty}" value="42" name="randomRequestParamName"/>
<a4j:ajax />
</rich:select>
这不会爆炸,但它也会不设置属性。我想知道是否有类似的方式设置(或多个)属性。
答案 0 :(得分:1)
a4j:param只能嵌套在一个动作组件中,例如a4j:commandButton,a4j:commandLink和a4j:jsFunction。您也可以将它与标准按钮/链接组件一起使用。
答案 1 :(得分:0)
我有一个类似的问题。我的页面必须在自动完成请求完成之前传输有关自动填充的信息。我通过使用jsFunction实现了这一点。我的自动填充功能如下:
<rich:autocomplete mode="ajax" showButton="true" value="#{conf.fieldValue}"
autocompleteMethod="#{BackingBean.search.autocomplete}"
minChars="3" onfocus="sendInfo('#{conf.label}')">
</rich:autocomplete>
根据conf.label(conf是forEach变量),自动完成方法中的辅助bean会获取不同的数据。
此信息的传输由jsFunction完成(在自动完成声明之后):
<a4j:jsFunction name="sendInfo">
<a4j:param name="param1" assignTo="#{BackingBean.search.currentAutocomplete}"/>
</a4j:jsFunction>
只是,当用户将焦点放在特定的自动完成时,“sendInfo”将使用绑定到辅助bean的一个参数执行。