h:commandButton和ajax错误

时间:2013-11-28 21:45:44

标签: ajax jsf jsf-2 commandbutton

我在我的页面上:

<h:form id="qw">
    <h:panelGrid columns="3" >
           <h:outputLabel for="username" value="Login:"/>
           <h:inputText id="username" value="#{userManager.userName}" required="true">
              <f:ajax event="blur" render="usernameMessage"/>
           </h:inputText>
           <h:message id="usernameMessage" for="username" />

           <h:outputLabel for="password" value="#{msg.password}"/>
           <h:inputSecret id="password" value="#{userManager.password}" required="true">
              <f:ajax event="blur" render="passwordMessage" />
            </h:inputSecret>
            <h:message id="passwordMessage" for="password" />

           <h:commandButton value="#{msg.login}" action="#{userManager.login}">
              <f:ajax execute="@form" render=" @form qw usernameMessage passwordMessage messages"/>
           </h:commandButton> 
       </h:panelGrid>
   </h:form>

   <h:messages id="messages" globalOnly="true"/>

当我运行应用程序并单击“登录”按钮时,我收到此错误:

Error Message: Request failed with status 0 and reason 

--------------------------------------------------------
Calling function:myfaces._impl.xhrCore._AjaxRequest
Error Name: httpError

这是什么意思?怎么了?我不能在Ajax中使用h:commandButton吗?

2 个答案:

答案 0 :(得分:2)

使用JSF2时,xhtml看起来很好。您打开一个表单,使用输入字段,消息和ajaxified commandButton。您可以跳过重新渲染qwusernameMessagepasswordMessage - 它们已经是@form的一部分。

h:messages不在表格之内,不应受到任何伤害。可能这是myFaces实现的一个特殊问题,或者你只是以某种方式丢失了连接 - JSF明智的你应该是安全的。

答案 1 :(得分:1)

在阅读L-Ray答案后,我意识到h:messages在表单之外,因此我必须在名称:之前添加messages。它应该是:

    <h:commandButton value="#{msg.login}" action="#{userManager.login}">
        <f:ajax execute="@form" render=" @form :messages"/>
    </h:commandButton> 

有关它的更多信息,请阅读: http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html#AjaxRenderingOfContentOutsideForm