我正在尝试使用< 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')}"/>
如何“抓取”刚输入的值,以便将其作为参数传递给方法?
解决方法
您需要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)}"/>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。