我在JSP
文件中使用以下代码,该文件来自AppEngine
serlvet。
<script type="text/javascript" >
var role = <%= request.getAttribute("role") %>;
</script>
变量是使用以下Servlet
设置的:
req.setAttribute("role", role );
req.getRequestDispatcher("index.jsp").forward(req, resp);
代码在AppEngine生产中运行良好,但在本地开发服务器中我立即得到以下内容:
Problem accessing /. Reason:
INTERNAL_SERVER_ERROR
Caused by:
java.lang.StackOverflowError
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:438)
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:438)
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:438)
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:438)
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:438)
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:438)
at org.mortbay.jetty.servlet.Dispatcher$ForwardAttributes.setAttribute(Dispatcher.java:438)
这就像永远一样。在调试时,我还可以看到Servlet代码被称为无休止的时间。
我发现了一些与AppEngine生产类似问题的引用,但发现AppEngine开发服务器没有可行的修复。
任何想法??
答案 0 :(得分:0)
您确定要在响应中设置属性吗?
req.setAttribute("role", role );
好像你是在进入servlet的请求中设置它而不是你发送的响应。