繁体   English   中英

JSF 2,ajax输入字段在firefox 10和ie9中表现不同

[英]JSF 2, ajax input field behaves differently in firefox 10 and ie9

当光标在输入“测试”中并且用户按简化形式按下回车键时

<h:form>
 <h:inputText id="test" value="#{myModel.someValue}" >
  <f:ajax event="blur" execute="@this" listener="#{myBean.calculateStuff}" render="myText"/>
</h:inputText>

<h:outputText id="myText" value="#{myModel.myText}"  />

<h:commandButton value="send" action="#{myBean.calculatedNextPage} ">

</h:form>

firefox调用1个提交,即调用提交和部分请求。

这种行为可以吗? 从应用程序的角度来看,这很麻烦,因为在客户端/服务器端可以防止/检测到多个请求。

如果某个字段的验证/转换失败,我们将事先不知道页面结果,并且我们可能无法在两个浏览器上都显示更新的“ myText”。 输入键检查以防止提交是不可取的,在正常情况下,“模糊”是好的。 有什么建议如何使两个浏览器以相同的方式工作?

确实不希望出现这种情况。 但是MSIE作为整体浏览器本身也没有。 作为Web开发人员,这就是您要面对的问题。 当提交事件发生时,Firefox / Chrome / Safari / etc正确跳过了模糊事件。

如果您的唯一目的是转换/验证someValue ,那么您应该在普通的转换器和/或验证器中进行此操作,而不是在ajax侦听器方法中进行此操作。

<h:inputText id="test" value="#{myModel.someValue}">
    <f:converter converterId="someValueConverter" />
    <f:validator validatorId="someValueValidator" />
    <f:ajax event="blur" execute="@this" listener="#{myBean.calculateStuff}" render="myText"/>
</h:inputText>

这样,您可以安全地忽略“不必要的” ajax请求。

但是,如果您确实有困难,可以在您的特定示例中始终添加一个onsubmit处理程序以跳过onblur

<h:form id="form" onsubmit="document.getElementById('form:test').onblur=null">

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM