加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

jsf – 将参数传递给a4j:ajax方法

发布时间:2020-12-16 02:48:16 所属栏目:百科 来源:网络整理
导读:我正在尝试使用 a4j:ajax使用刚刚在表单上输入的值来提供方法; h:selectOneMenu id="aa" value="#{colorClass.color}" f:selectItems value="#{myChoices.colorOptions}"/ a4j:ajax event="change" render="colorCode" execute="#{myChoices.getColorCode(c
我正在尝试使用< 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作为执行的一部分传递时,它是空白的;
如果我用文字替换colorClass.color

<a4j:ajax event="change" render="colorCode" 
    execute="#{myChoices.getColorCode(colorClass,'green')}"/>

调用该方法,找到colorCode并重新绘制表单

如何“抓取”刚输入的值,以便将其作为参数传递给方法?

解决方法

您需要listener属性而不是execute属性. execute属性应该指向要提交的客户端ID的集合(默认为< f:ajax>中的@this和< a4j:ajax>中的@form).但是在您的特定情况下,它返回void并将执行保持为空. listener属性应该指向bean动作侦听器方法.相应修复:

<a4j:ajax event="change" render="colorCode" 
    listener="#{myChoices.getColorCode(colorClass,colorClass.color)}"/>

请注意,colorClass参数在这里似乎是多余的,或者至少是colorClass.color,因为您也可以在getColorCode()方法中执行colorClass.getColor().只要通过其中一个就足够了.传递colorClass.color会更好,这样你的myChoices bean就不会与colorCode bean紧密结合.

<a4j:ajax event="change" render="colorCode" 
    listener="#{myChoices.getColorCode(colorClass.color)}"/>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读