gpt4 book ai didi

在 TokenHelper 中 setSessionToken 时抛出 java.lang.IllegalStateException

转载 作者:行者123 更新时间:2023-11-30 06:36:43 26 4
gpt4 key购买 nike

我有一个在带有 Jetty 服务器的 Linux 操作系统上运行的 Java 应用程序。

Struts 操作会更改 Linux 系统的日期和时间以及在呈现另一个页面后。操作已成功执行,但在渲染页面时会抛出 java.lang.IllegalStateException

我在该 JSP 页面中使用了 s:token 标记来防止表单的重复提交。

错误跟踪如下:

ERROR TokenHelper Error creating HttpSession due response is committed to client. You can use the CreateSessionInterceptor or create the HttpSession from your action before the result is rendered to the client: null
java.lang.IllegalStateException
at org.eclipse.jetty.server.session.AbstractSession.checkValid(AbstractSession.java:109)
at org.eclipse.jetty.server.session.HashedSession.checkValid(HashedSession.java:73)
at org.eclipse.jetty.server.session.AbstractSession.getAttribute(AbstractSession.java:132)
at org.apache.struts2.dispatcher.SessionMap.get(SessionMap.java:161)
at org.apache.struts2.dispatcher.SessionMap.put(SessionMap.java:179)
at org.apache.struts2.util.TokenHelper.setSessionToken(TokenHelper.java:93)
at org.apache.struts2.util.TokenHelper.setToken(TokenHelper.java:79)
at org.apache.struts2.components.Token.buildToken(Token.java:107)
at org.apache.struts2.components.Token.evaluateExtraParams(Token.java:97)
at org.apache.struts2.components.UIBean.evaluateParams(UIBean.java:886)
at org.apache.struts2.components.UIBean.end(UIBean.java:535)
at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42)
at org.apache.jsp.pages.Continue_jsp._jspx_meth_s_token_0(org.apache.jsp.pages.Continue_jsp:495)
at org.apache.jsp.pages.Continue_jsp._jspx_meth_s_form_0(org.apache.jsp.pages.Continue_jsp:429)
at org.apache.jsp.pages.Continue_jsp.access$6(org.apache.jsp.pages.Continue_jsp:407)
at org.apache.jsp.pages.Continue_jsp$Continue_jspHelper.invoke2(org.apache.jsp.pages.Continue_jsp:1197)
at org.apache.jsp.pages.Continue_jsp$Continue_jspHelper.invoke(org.apache.jsp.pages.Continue_jsp:1221)

请告诉我们可能的解决方案或处理错误的建议。

最佳答案

ERROR TokenHelper Error creating HttpSession due response is committed to client. You can use the CreateSessionInterceptor class or create the HttpSession from your action before the result is rendered to the client.

您可以创建HttpSession代码类似于

ActionContext context = ActionContext.getContext();
SessionMap<String, T> sessionMap = (SessionMap<String, T>) context.getSession();

if (sessionMap == null) {
sessionMap = new SessionMap<String, T>(ServletActionContext.getRequest());
context.setSession((Map<String, Object>) sessionMap);
}
<小时/>

createSession interceptor .

This interceptor creates the HttpSession if it doesn't exist, also SessionMap is recreated and put in ServletActionContext.

This is particular useful when using the <@s.token> tag in freemarkertemplates. The tag do require that a HttpSession is already createdsince freemarker commits the response to the client immediately.

关于在 TokenHelper 中 setSessionToken 时抛出 java.lang.IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45097519/

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