jsf-2 - JSF双重提交表单数据

标签 jsf-2 glassfish primefaces

我一直困扰着我的 jsf 应用程序(Mojarra 2.1 on Glassfish 3.0.1 with Primefaces 2.1, SSL)的一个难以重现的错误。我怀疑它可能与重复或多次提交同一表格有关,例如当用户双击提交按钮时。

此错误的症状是服务器中断资源文件(javascript、css)的传输,然后页面看起来很奇怪(缺少 css)或无法按预期工作(缺少 js)。

我不确定这是唯一的原因。这很难弄清楚,因为错误偶尔会发生。

有没有办法防止多次提交同一个表单?一个 javascript 解决方案就可以做到。但也许有一个服务器端解决方案,也许是一个特定的 jsf 配置?

最佳答案

在这种特殊情况下,我更喜欢 JavaScript 解决方案而不是服务器端解决方案。服务器端解决方案只会阻止业务逻辑被执行两次。它不会阻止 HTTP 请求被发送两次,也不会阻止资源请求被中止。我认为这不会改变第二次提交时资源损坏的特定问题。

您可以使用 jsf.ajax.addOnEvent 函数对 ajax 请求进行全局 Hook 。这是一个启动示例:

jsf.ajax.addOnEvent(function(data) {
    if (data.source.type != "submit") {
        return;
    }

    switch (data.status) {
        case "begin":
            data.source.disabled = true;
            break;
        case "complete":
            data.source.disabled = false;
            break;
    }    
});

关于jsf-2 - JSF双重提交表单数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8127109/

相关文章:

html - 更改 pr :inputText using css 的颜色

java - 在数据表 primefaces 中看不到行

jsf - JSF错误页面消息

java - JSF 2 - 存在哪些方法可以返回到调用页面?

tomcat - 本地主机在 Tomcat 启动后未被解析,而是显示奇怪的 GlassFish 服务器消息

ssl - Glassfish 5 服务器的 HTTPS 不工作 "Out of the Box"

mysql - 为什么我无法从 JDBC 连接池 ping 我的数据库?

java - Primefaces 选项卡更改通知

Java JSF 关于自定义验证

java - 在 ManagedBean 之间传递数据