添加 会导致 java.lang.IllegalStateException: 提交响应后无法创建会话

2024-02-14

添加后,我在一个非常简单的 JSF 2 页面中遇到以下异常<h:form>:

java.lang.IllegalStateException: Cannot create a session after the response has been committed
    at org.apache.catalina.connector.Request.doGetSession(Request.java:2758)
    at org.apache.catalina.connector.Request.getSession(Request.java:2268)

我在 Tomcat 7.0.22 和 JDK 7 上使用 Mojarra 2.1.3 和 PrimeFaces3.0M4。

页面是一个非常基础的数据表:

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:p="http://primefaces.org/ui">
<h:head>

</h:head>
<h:body>
    <h:form>        
        <p:dataTable var="car" value="#{tableBean.cars}">

                 ......
        </p:dataTable>
    </h:form>
</h:body>
</html>

该页面在浏览器上正确显示,但在控制台上我看到异常。如果我删除,异常就会消失<h:form>.

这是如何引起的以及如何解决?


这是一个已知问题,您已将其真实报告为第2215期 http://java.net/jira/browse/JAVASERVERFACES-2215。当响应缓冲区溢出(由于内容较大)并且在创建会话之前提交响应时,就会发生这种情况。这是 Mojarra 过于热心地尝试尽可能推迟“不必要的”会话创建的结果(尽管这本身就是一件好事)。

在他们解决问题之前,有几种解决方法:

  1. 创建一个Filter这确实HttpServletRequest#getSession() http://download.oracle.com/javaee/6/api/javax/servlet/http/HttpServletRequest.html#getSession%28%29 before FilterChain#doFilter() http://download.oracle.com/javaee/6/api/javax/servlet/FilterChain.html#doFilter%28javax.servlet.ServletRequest,%20javax.servlet.ServletResponse%29。优点:无需更改 JSF 配置/代码。缺点:当您也想避免自己创建不必要的会话时。

  2. Call ExternalContext#getSession() http://download.oracle.com/javaee/6/api/javax/faces/context/ExternalContext.html#getSession%28boolean%29 with true在 bean 的(后)构造函数中或者preRenderView听众。优点:其实没什么。缺点:太老套了。

  3. 添加名称为的上下文参数com.sun.faces.writeStateAtFormEnd和价值false to web.xml。优点:与 #1 和 #2 相比,将真正避免不必要的会话创建。缺点:响应现在将完全缓冲在内存中,直到</h:form>到达了。如果您的表单不是很大,那么影响应该很小。然而,如果你的<h:form>在视图中开始相对较晚。这可以与#4 结合。

  4. 添加名称为的上下文参数javax.faces.FACELETS_BUFFER_SIZE以及 Facelets 响应缓冲区大小的值(以字节为单位)(例如6553564KB),以便整个 HTML 输出或至少<h:form>(参见#3)适合响应缓冲区。优点/缺点,请参见#3。

  5. 添加名称为的上下文参数javax.faces.STATE_SAVING_METHOD和价值client to web.xml。优点:除非您有会话范围的 bean,否则根本不会创建会话。它还可以立即解决潜在问题ViewExpiredException案例。缺点:增加网络带宽使用。如果您使用部分状态保存,那么影响应该很小。

至于为什么删除后问题就消失了<h:form>,这是因为不需要创建会话来存储视图状态。


Update:这与副本相同第2277期 http://java.net/jira/browse/JAVASERVERFACES-2277自 Mojarra 2.1.8 以来已修复。因此,您也可以至少升级到该版本。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

添加 会导致 java.lang.IllegalStateException: 提交响应后无法创建会话 的相关文章

  • JQuery 表单提交不发送帖子

    我在使用 JQuery 提交表单时遇到问题 当按下提交按钮时 表单会正确提交 但是当我尝试使用时 somebutton click function form myForm submit 我还尝试从 Chrome 控制台调用表单提交 表单未
  • 使用 CDI+JSF 使会话失效不起作用

    我正在尝试在我的应用程序中实现注销 所以我这样做了 public String logout try FacesContext facesContext FacesContext getCurrentInstance ExternalCon
  • 使用 PHP 将表单数据发送/发布到 URL [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 我有一个通过 POST 提交的表单 提交表单后我捕获变量 如何连接表单数据 然后将其 POST 到 url 然后重新定向到感谢页面 这不是确
  • Laravel 所有会话 ID 与 Redis 驱动程序

    在我的应用程序中 我希望允许某些用户能够注销除他 她之外的所有其他用户 当会话驱动程序设置为文件时 我已经完成了此功能 但现在我使用 redis 作为会话驱动程序 并且我无法找到任何方法来列出所有当前会话 就像我在文件时所做的那样司机 问题
  • 从 iframe 访问 Session 变量

    我有一个 jsp 我在其中设置了会话变量 但是 当我尝试读取另一个 jsp 中的会话变量 user 时 该变量已加载到 iframe 同一主机 服务器等 中 然后我得到 NullPointerException 如何在 iframe 中获取
  • POJO 支持使用omnifaces 自动完成primefaces

    我正在尝试在我的项目中使用 primefaces 自动完成组件 以避免将特定转换器写入我尝试使用的每个列表对象全能面孔 http showcase omnifaces org converters ListConverter如建议的here
  • 为什么最后一个关闭的 MDI 子窗体没有被垃圾回收?

    我们的应用程序中存在内存泄漏问题 我已成功通过以下简单示例复制了其中一个问题 复制设置 1 创建以下辅助类 用于跟踪对象创建 销毁 public class TestObject public static int Count get se
  • JSF EL:instanceof 已保留但尚未实现?

    我在 JSF EL 中找到了 instanceof 运算符 但在使用时它会抛出异常 明明是保留了却没有执行 如果还没有比我当前使用的 JSF 1 2 更新的版本 那么它 可能 什么时候可用 关键词instanceof确实在 EL 中保留 参
  • PassportJS - 自定义回调并将 Session 设置为 false

    是否可以使用自定义回调并禁用会话 在文档中 它显示了如何禁用会话和自定义回调 但如何组合它们 app get login function req res next passport authenticate local function
  • 有没有办法调用 VBA(MS Access 2002 或 2003)中任何控件的 BeforeUpdate 事件过程?

    在 VBA 中 我正在更改 Access 表单中的一些控件的值 我喜欢在执行此操作后运行这些控件的 BeforeUpdate 事件 因为它会检查字段之间的一致性 Private Sub ExampleProc1 Dim intCancel
  • php echo 不工作

    我的代码似乎不起作用 单选按钮出现 但旁边什么也没有 似乎 mysql fetch array 由于某种原因无法工作 因为我已经玩过代码并反复测试它以查找代码似乎遇到的位置出现问题并停止工作 有人可以告诉我出了什么问题吗 欢呼声我是新手 最
  • 防止 ASP.Net 中的表单重新提交(不重定向到我自己)

    我有一个带有表单元素的母版页
  • 将数组数据从 html 表单传递到 php 数组变量

    我有一张表格来记录一组项目的工作时间 该表单使用项目 ID 小时数和注释字段的数组 表单行是项目数量的循环 该表单将数据传递给 PHP 脚本进行处理 PHP 脚本没有看到数组中的值 它只是给我 Array 作为输出 文档和其他示例让我想知道
  • 如何将一个表单的文件上传字段中的值复制到另一个表单的文本字段?

    我有一页上有两种不同的表格 第一个表单允许用户上传图像文件并通过电子邮件发送 第二个表单根据用户输入生成 URL 为了将图像名称添加到 URL 我需要在第二个表单中有一个字段 该字段从第一个表单的字段中复制图像名称 我不想让用户浏览并选择图
  • 未捕获的类型错误:无法读取未定义的属性“prop”

    我有 6 个输入复选框 如果选中的复选框超过 3 个 则最后一个复选框将被取消选中 为了更好地理解 请参阅我之前的question https stackoverflow com questions 35195235 if checkbox
  • 多文件上传字段的重力形式预览缩略图

    我们使用重力形式将多个图像附加到图库自定义字段并创建新帖子 我们不知道如何在 HTML5 导入字段下显示图像缩略图 而不仅仅是在提交表单之前显示文件名 之前的答案仅涵盖单个文件上传 图片上传重力形式预览 https stackoverflo
  • 如何使用 jquery.validation 插件不将错误元素显示为标签

    好吧 伙计们 我已经阅读了有关 jQuery 验证插件的所有其他帖子和问题 他们似乎没有我想要做的事情 我希望显示错误不与消息一起显示 而只是在输入字段周围创建一个红色边框 这里只是一些表格
  • Facebook-API 中的会话密钥和访问令牌

    有人可以向我解释一下什么是会话密钥和访问令牌吗 怎样才能抓住那两个人呢 为什么以及何时需要使用它们 什么时候是 一次性 什么时候不是 另外 他们之间有什么区别 请用Java 来做 我是一位刚接触 facebook API 的 Java 开发
  • 如何检测当前的 JSF 版本?

    我正在开发 jsf webapp 现在我需要知道我正在使用什么 JSF 版本 我在哪里可以查到这个 提前致谢 您的意思是 以编程方式 你可以从Package getImplementationVersion http docs oracle
  • Ajax 如何在 JSF 上工作?

    我是 JSF 新手 但我对 ASP NET 及其 Ajax 功能有一些经验 我知道 JSF 有一些 Ajax 标签可以使用 Ajax 完成一些任务 但我想知道它是如何使用 Ajax 的 它使用 ASP NET 中的 ScriptManage

随机推荐

  • 有没有办法在 Ruby 中全局目录但排除某些目录?

    我想全局一个目录来后处理头文件 但我想排除项目中的一些目录 现在默认的方式是 Dir h each header puts header 如果每个标头条目位于排除目录中 则手动检查它似乎效率低下 我知道这已经晚了 4 年 但对于可能遇到这个
  • 多租户:使用 Spring Data JPA 管理多个数据源

    我需要创建一个可以管理多个数据源的服务 当应用程序首次运行应用程序时 这些数据源不一定存在 实际上端点将创建新的数据库 我希望能够切换到它们并创建数据 例如 假设我有 3 个数据库 A B 和 C 然后我启动应用程序 我使用创建 D 的端点
  • Electron 应用程序:无法加载预加载脚本

    每次我启动电子应用程序时都会遇到此错误 electron js2c renderer init js 91 Unable to load preload script C Users Desktop Projects Electron Ap
  • ng-repeat过滤器空值不显示

    为什么当我应用时角度不会显示为空的值 ng repeat p in foo filter filter2 其中过滤器2是 scope filter2 function p if p state null return p state els
  • 使用 Moq 对工作单元和通用存储库模式框架进行单元测试

    我正在对一个服务进行单元测试 该服务使用工作单元和通用存储库 并使用起订量 问题是 当我在调试模式下运行测试时 在服务类中 subsiteRepository 始终为 null 我正在嘲笑的服务类的设置 private readonly I
  • 我应该如何在msbuild脚本中引用sn.exe?

    我需要在构建完成后重新签署我的程序集 并且我已经对其做了一些其他事情 所以我开始添加一个
  • 在单个 SQL 查询中,查询可以使用单个表中的多少个索引?

    在 Oracle 中 如果您有一个表 在 3 个不同的列上有 3 个索引 单个 SQL 语句可以从一个表中使用多少个索引 可能这三个都可以使用 Oracle 不太可能使用所有这三个 或者使用所有这三个将是有益的 但这是可能的 Oracle
  • Javascript insideHTML 没有更新

    您好 我正在尝试更新以下脚本的innerHTML div class layout wrapper div class alert success animate in Your submission was successful div
  • Directx 11,将多个纹理发送到着色器

    使用此代码我可以将一个纹理发送到着色器 devcon gt PSSetShaderResources 0 1 pTexture 当然 我通过以下方式制作了 pTexture D3DX11CreateShaderResourceViewFro
  • 迭代 NSSet - SwiftUI 2.0

    我开始查看 CoreData 并有两个实体 这些在 Player 之间形成多对多关系 和团队 我试图在列表中使用 ForEach 来迭代团队的球员 但我似乎无法让它工作 我一直在尝试的代码如下 我尝试的任何其他解决方案都会收到错误 例如 N
  • 在远程仓库上删除本地 Git 分支后删除它们

    我希望本地和远程存储库在分支方面始终保持同步 在 GitHub 上进行拉取请求审查后 我合并并删除了那里的分支 远程 我如何在本地存储库中获取此信息并让 Git 也删除我的本地版本的分支 快速的方法 git branch merged gr
  • 从另一个类文件访问 MainForm

    我有这个 MainForm 类 namespace homework 001 public partial class MainForm Form public MainForm InitializeComponent public str
  • 在组中创建带有条件的 random.randint?

    我有一个专栏叫做 cars并想创建另一个名为persons using random randint 我有 dat persons np random randint 1 5 len dat 这样我就可以输入使用这些的人数 但我会 想知道如
  • 如何拆分一个巨大的rdd并轮流广播?

    描述 我们的spark版本是1 4 1 我们想要连接两个巨大的 RDD 其中之一带有倾斜数据 所以spark rdd操作join可能会导致内存问题 我们尝试将较小的一个分割成多个片段 然后分批广播它们 在每个广播回合中 我们尝试将较小的rd
  • Visual Basic 6 中的折叠/折叠函数和子例程

    您知道在 Visual Basic 6 IDE 中是否有一种方法可以折叠 折叠函数和子例程 更好的是 ifs 和 whiles 至少有一个插件或类似的东西 有时我必须处理数千行的文件 如果不进行裁剪 这是不可能的 当然这是一个非常古老的应用
  • 在 Web 应用程序中将页面打印到不同的打印机

    我想编写一个网络应用程序 可以处理用户演示文稿 该演示文稿在提交后会发送到本地系统打印机 订单的一部分将发送到黑白激光打印机 另一部分将发送到另一台打印机进行另一个处理 理想情况下 它能够在任何主要系统上运行 Linux OSX 或 Win
  • 如何在 ASP.NET MVC 中将参数传递给局部视图?

    假设我有这个部分视图 Your name is strong firstName lastName strong 可以通过仅限儿童的操作来访问 例如 ChildActionOnly public ActionResult FullName
  • Windows 上的 Perl GUI 编程

    我正在寻找 Windows 上的 Perl GUI 编程工具 用于教育 内部开发 主要与科学相关 我的第一选择是 PerlQt 我的一个朋友正在使用 Qt 和 C 进行开发 所以我希望从他那里得到一些帮助 Qt 还有一个 GUI 创建器 L
  • Angular 2 输入指令修改表单控制值

    我有一个简单的 Angular 2 指令 可以修改文本框的输入值 请注意 我正在使用模型驱动表单方法 Directive selector appUpperCase export class UpperCaseDirective const
  • 添加 会导致 java.lang.IllegalStateException: 提交响应后无法创建会话

    添加后 我在一个非常简单的 JSF 2 页面中遇到以下异常