为什么commandButton的action属性不能与ajax一起渲染

时间:2016-11-14 08:45:02

标签: ajax jsf jsf-2

这个commandButton正在运行:

<h:commandButton id="button_updateIt" value="#{i18n.button_update_it}"
    action="#{masterBean.update()}">         
</h:commandButton>

这个ajax调用正在运行:

<h:commandButton id="button_updateIt" value="#{i18n.button_update_it}">
    <f:ajax event="click" render=":form_2:updateMe" />            
</h:commandButton>

为什么action属性与ajax结合不起作用?

<h:commandButton id="button_updateIt"
    value="#{i18n.button_update_it}"
    action="#{masterBean.update()}">

    <f:ajax event="click" render=":form_2:updateMe" />

</h:commandButton>

我使用jsf版本2.1.1和java 1.7.0以及GlassFish Server 3.1.2(版本23)

1 个答案:

答案 0 :(得分:1)

为什么您要使用点击事件?如果您正在使用该事件,则在调用操作方法之前会重新呈现您的表单。

您需要更改事件类型,或者需要在f:ajax click事件中使用侦听器,而不是在commandButton中使用该操作。

<h:commandButton id="button_updateIt"
    value="#{i18n.button_update_it}"
    action="#{masterBean.update()}">

    <f:ajax render=":form_2:updateMe" />

</h:commandButton>

<h:commandButton id="button_updateIt"
    value="#{i18n.button_update_it}">

    <f:ajax event="click" listener="#{masterBean.update()}" 
      render=":form_2:updateMe" />

</h:commandButton>