1

我遇到了一个问题:在 IE8 中,f:ajax 中的事件不起作用,并且在更改值后不要更新其他组件。

<h:selectBooleanCheckbox id="someId"
                        value="#{someBean.showEmpty}"
                        title="#{i18n['button.showEmpty']}">
                        <f:ajax event="change"
                            listener="#{someBean.changeShowEmpty}"
                            execute=":someForm @form" render=":messages :someForm @form" />
                    </h:selectBooleanCheckbox>

在 Chrome、Opera、Firefox 中 - 它可以工作。谢谢您的帮助。

4

1 回答 1

2

这确实是 MSIE 的“预期”行为。它只会在第二次更改时起作用,因为 MSIE 认为第一次单击本质上不是更改。您应该click改为收听该事件。这也正是<f:ajax> 默认情况下已经为 a 所做的<h:selectBooleanCheckbox>。只需event完全删除该属性。

<f:ajax listener="#{someBean.changeShowEmpty}"
    execute=":someForm @form" render=":messages :someForm @form" />

<f:ajax event>默认为"valueChange"in components ,UIInput默认为"action"in UICommandcomponents。在UIInput生成单选按钮或复选框的组件中,它将生成onclick. 在其他UIInput组件(文本字段、文本区域、下拉菜单等)中,它将生成onchange.


与具体问题无关,与您在属性中的想法相反,无法处理<h:form>另一个,只是因为它的值没有execute与当前表单的提交一起提交。但那是另一回事了。

于 2012-04-28T14:06:27.930 回答