2011-04-27 48 views
1

是否可以使用下拉菜单或者是否也可以使用实现ActionSource的父对象作为f:setPropertyActionLister?JSF2:有没有办法使用丰富的a4j:param:select或h:selectOneMenu

理想我会做类似如下:

<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> 

这不炸毁,但它也确实设置该属性。我想知道是否有类似的方式设置一个(或多个)属性。

回答

1

a4j:param只能嵌套在动作组件中,比如a4j:commandButon,a4j:commandLink和a4j:jsFunction。您也可以将它与标准按钮/链接组件一起使用。

+0

感谢您的回复。你知道任何涉及这个限制的文件吗? – jnt30 2011-04-27 23:07:47

+0

不,但我问过来自RichFaces团队的人;) – 2011-04-28 00:16:22

+0

这对我来说已经足够了。感谢您的信息。我个人的建议是以类似f:setPropertyActionListener的方式炸毁它,因为它实际上没有办法工作,但是我离题了。再次感谢,你得到的要点! – jnt30 2011-04-28 00:56:51

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。