有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JSF2.0中混合Ajax和完整请求的java

给我带来问题的JSF代码如下:

<h:panelGrid columns="3">
          <!-- Minimum Password Length -->
          <h:outputText value="#{i18n['xxx']}:" />
                        <h:inputText id="minLength"
                                     value="#{passwordPolicies.minLength.paramValue}"
                                     required="true">
                            <f:validateLongRange minimum="1"/>
                            <f:ajax event="valueChange"
                                    render="@this minLengthMessage"
                                    listener="passwordPolicies.testListener"/>
                        </h:inputText>
                        <h:message id="minLengthMessage"
                                   for="minLength"
                                   errorClass="error"
                                   tooltip="true"/-->
                <!-- Many other validation fields -->
<h:panelGrid/>

首先,我有一个非常类似的问题:f:ajax listener never fired。我必须在JSF页面上结合Ajax和完整请求Jim Driscoll @ java.net说为了让这两个函数正常工作,必须设置一个Ajax错误监听器?这与ajax标记的listener属性有很大区别吗

现在,我知道我可以尝试使用Primefaces p:inputText和p:ajax标记,但这些标记需要为所有经过验证的字段提供单独的侦听器。有没有办法修复f:ajax错误监听器,以便被触发,并且不会出现令人讨厌的问题:

enter image description here

谢谢你的意见


共 (3) 个答案

  1. # 1 楼答案

    如果要添加一些监视器,请执行以下操作:

    <h:commandButton value="Submit"  action="#{yourBean.YourAction}" render="thisIsWhereYouWantToDisplay">
    <f:ajax onevent="monitor" execute="@form" render="@form" />
                                            </h:commandButton>
    
  2. # 2 楼答案

    只需在此处为后代记录这一点,但在JavaScript中创建一个错误处理程序,然后从f:ajax标记引用它,将抑制错误警报,并导致调用错误处理程序时返回错误消息。问题中提到的Jim Driscoll在文章中描述了这种行为,但没有具体说明。我已经验证了它的工作原理:

    function onAjaxError( error ) { console.log( error.description ); }

    <f:ajax onerror="onAjaxError" ...>

  3. # 3 楼答案

    您需要使用命令按钮来触发ajax请求

    <h:commandButton value="Submit" action="#{bean.submit}">
        <f:ajax execute="@form" render="@form" />
    </h:commandButton>
    

    那些<f:ajax>侦听器不是必需的。在吉姆的文章中,他们只是作为一个例子来说明种族状况。哪个先被调用?显然,您希望首先调用侦听器

    this tutorialthis chapter中可以找到几乎相同形式的实例。只使用了blur而不是valueChange,因为当模糊保持为空的required="true"字段时,valueChange将不会被调用,这会导致“Value is required”消息永远不会显示在这样的字段上