gpt4 book ai didi

java - JSF 中的 Ajax 表单更新显示 ViewExpiredException

转载 作者:行者123 更新时间:2023-12-01 12:52:25 24 4
gpt4 key购买 nike

我有一个 jsf 1.2 应用程序,索引页中有一些链接。该链接可通过在新的 jquery 对话框中单击来打开。每个链接都会在不同的对话框中打开我的应用程序的新页面,因此,应用程序可以在单个页面的多个对话框中打开许多链接。我的所有托管 Bean 都具有 session 范围。

我的问题是,当我打开一个新对话框并单击其中的任何链接时,我的应用程序仍然可以正常工作,但在此之后,如果我单击索引页面中的其他链接以打开另一个对话框,该应用程序会向我显示ViewExpiredException。我尝试将 jsf 更新到 2.0,将 web.xml 中的 EnableRestoreView11Compatibility 设置为 true,在我的 bean 中使用 keepAlive,但没有任何效果。

我认为发生这种情况是因为我有一个具有一种状态的主页,当我单击在 jquery 对话框中打开一个新页面时,它会加载整个页面并将 html 放入其中。因此,该请求没有引用主页的状态。我该如何解决这个问题?

最佳答案

看来JSF中的错误尚未修复,计划在JSF 2.3中修复

您可以将 java.net 中发布的以下解决方法用于 jquery

http://java.net/jira/browse/JAVASERVERFACES_SPEC_PUBLIC-790

var patchJSF = function () {
jsf.ajax.addOnEvent(function (e) {
if (e.status === 'success') {
$("partial-response:first changes:first update[id='javax.faces.ViewState']",
e.responseXML).each(function (i, u) {
// update all forms
$(document.forms).each(function (i, f) {
var field = $("input[name='javax.faces.ViewState']", f);
if (field.length == 0) {
field = $("<input type=\"hidden\" name=\"javax.faces.ViewState\" />").
appendTo(f);
}
field.val(u.firstChild.data);
});
});
}
});
}

关于java - JSF 中的 Ajax 表单更新显示 ViewExpiredException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24120921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com