将参数传递给a4j:ajax方法
问题描述:
我正尝试使用<a4j:ajax>
来提供刚刚在表单中输入值的方法;将参数传递给a4j:ajax方法
<h:selectOneMenu id="aa" value="#{colorClass.color}">
<f:selectItems value="#{myChoices.colorOptions}"/>
<a4j:ajax event="change" render="colorCode"
execute="#{myChoices.getColorCode(colorClass,colorClass.color)}"/>
</selectOneMenu>
窗体上的颜色选择正确;
我的问题是,当我通过colorClass.color
作为执行的一部分时,它是空白的; 如果我用文字
<a4j:ajax event="change" render="colorCode"
execute="#{myChoices.getColorCode(colorClass,'green')}"/>
方法替代colorClass.color
被调用时,找到的ColorCode和重绘形式
我怎么能“抢”刚输入的值,这样我可以把它作为一个参数该方法?
答
您需要listener
属性而不是execute
属性。 execute
属性应该指向要提交的客户端ID集合(缺省值为<f:ajax>
中的@this
和<a4j:ajax>
中的@form
)。但在您的特定情况下,它将返回void
并保持execute
为空。 listener
属性应该指向一个bean动作侦听器方法。因此解决这个问题:
<a4j:ajax event="change" render="colorCode"
listener="#{myChoices.getColorCode(colorClass,colorClass.color)}"/>
注意,colorClass
说法似乎是多余的位置,或者至少colorClass.color
,你也可以只做到colorClass.getColor()
的getColorCode()
方法内。只要通过其中一个就足够了。优先通过colorClass.color
,以便您的myChoices
bean与colorCode
bean不紧密配合。
<a4j:ajax event="change" render="colorCode"
listener="#{myChoices.getColorCode(colorClass.color)}"/>
非常感谢,这是它! – user969743
不客气。 – BalusC