- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个在带有 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 creatingHttpSession
due response is committed to client. You can use theCreateSessionInterceptor
class or create theHttpSession
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);
}
<小时/>
This interceptor creates the
HttpSession
if it doesn't exist, alsoSessionMap
is recreated and put inServletActionContext
.This is particular useful when using the
<@s.token>
tag in freemarkertemplates. The tag do require that aHttpSession
is already createdsince freemarker commits the response to the client immediately.
关于在 TokenHelper 中 setSessionToken 时抛出 java.lang.IllegalStateException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45097519/
我有一个在带有 Jetty 服务器的 Linux 操作系统上运行的 Java 应用程序。 Struts 操作会更改 Linux 系统的日期和时间以及在呈现另一个页面后。操作已成功执行,但在渲染页面时会
我是一名优秀的程序员,十分优秀!