JSF f:ajax和IE 8

时间:2012-04-28 11:26:23

标签: java jsf-2

我遇到问题:在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中 - 它有效。 谢谢你的帮助。

1 个答案:

答案 0 :(得分:2)

这确实是MSIE的“预期”行为。它只适用于第二次改变,因为MSIE认为第一次点击本质上不是改变。您应该收听click事件。这也正是<f:ajax> 已默认<h:selectBooleanCheckbox>的影响。只需完全删除event属性。

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

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


对于具体问题

无关,其他<h:form>可以处理,与您在execute属性中的想法相反,仅仅因为它的值不随当前表格的提交一起提交。但这是另一个故事。