【问题标题】:Browser specific behavior of JSF while I have one ajax listener and another action listener for command button当我有一个 ajax 侦听器和另一个用于命令按钮的动作侦听器时,JSF 的浏览器特定行为
【发布时间】:2016-06-17 07:10:02
【问题描述】:

我有

<p:inputText id="sales-person">
        <p:ajax event="change"
            update="employee_name" listener="#{quoteBean.rebuildServiceDataList}"/>
</p:inputText>

...和

 <p:commandButton id="confirm-button" process="#{breadcrumb.breadcrumb_base_name}" value="#{shop_msgs['continue.label']}"  actionListener="#{quoteBean.showPayUI}" />

为了理解,跳过了部分代码。

基本上,当我在输入文本上更改某些内容时,它会调用一些 ajax 方法来获取一些数据、验证等。当我点击命令按钮时,它会提交。

在 Chrome 浏览器中,如果我输入一些内容并直接单击提交按钮,它实际上是首先触发 onchange 事件,这会调用 ajax,然后执行命令按钮的动作侦听器。

但如果是 IE,如果我执行上述步骤,它只会执行 onchanage 并调用 ajax 方法。不会调用 actionListner。

有人可以帮我解决这个问题吗?

编辑 1:我什至尝试在命令按钮中使用 onclick,即使在 IE 的情况下也不会调用它。当我尝试单击按钮时,仅执行文本框的 onchange 事件。

提前致谢。

【问题讨论】:

    标签: jsf jsf-2 primefaces


    【解决方案1】:

    F12使用IE浏览器的开发者工具。 控制台中是否有任何错误消息? ajax 调用会发生什么? 我的第一个想法是,我怀疑您的 Bean 或类似内容是否缺少,因为它基本上可以工作。

    根据我的经验(与数据表有关),IE 处理 java 脚本确实比 Firefox 或 Chrome 更麻烦。

    【讨论】:

    • 感谢您的回复。浏览器控制台上没有任何内容。如果缺少 bean,那么它也不应该在 chrome 的情况下工作。如果 IE 第一次直接单击按钮,它正在执行 ajax,因为我将焦点移出输入文本框,然后第二次单击它正在提交的按钮。但是,如果我通过单击其他地方然后单击它正在提交的按钮来关注输入框。
    • 您是否尝试过在按钮上使用 immediate=truetype=submit ?可能有帮助:/
    • 尝试删除您的 标记并提交(用于检测问题的根源)。我可以想象您的 commandButton 将在此之后工作,而 ajax 会干扰您的请求提交。如果是这样,请给 一个机会来处理您的 ajax 请求,而不是 。更多信息在这里:primefaces.org/showcase/ui/ajax/remoteCommand.xhtml
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 2014-09-08
    • 2013-03-30
    • 2015-07-24
    • 1970-01-01
    • 2013-04-27
    相关资源
    最近更新 更多