我从数据库加载城市和州。我在JSP中使用了以下代码:
<s:action executeResult="true" name="LoadCities"> </s:action>
在初始页面加载期间它工作正常,但在我更新数据库中的城市时会给我一些问题。更新成功后,我将其重定向到同一页面。但这次我得到以下例外:
The server side component of the HTTP Monitor has detected a
java.lang.StackOverflowError. This happens when there is an infinite loop in
the web module. Correct the cause of the infinite loop before running
the web module again.
2014-03-18 15:51:02,965 WARN org.apache.struts2.components.Include.warn:49 -
Exception thrown during include of header.jsp javax.servlet.ServletException:
The server side component of the HTTP Monitor has detected a
java.lang.StackOverflowError. This happens when there is an infinite loop in
the web module. Correct the cause of the infinite loop before running
the web module again.
我该如何解决这个问题?
答案 0 :(得分:0)
这是因为您正在执行映射到与s:action
标记一起使用的相同JSP的结果。使用s:action
标记时,应该小心映射JSP。
实际上您应该重新考虑JSP的设计,因为很少使用此标记,并且可能会有一些情况适用于它。您可以使用唯一的一个操作在服务器端准备JSP(也可以链接但不建议在此处),但您可以在其中准备许多片段或切片。
因此,您要么不使用s:action
标记,要么将其与executeResult="false"
一起使用,或者选择上述方法之一来拆分JSP页面的设计。
现在,Ajax非常受欢迎,它可以解决在客户端加载数据和更新内容的许多问题。所以你有很多可能做到这一点。