我已经实现了一个基于Stripes的网站。我希望避免在其URL中使用.action附录。在我的每个Action Beans中,我都添加了@URLBinding("/home")类型的url绑定。
然后,我已经在我的web.xml中配置了DynamicMappingFilter,如http://stripes.sourceforge.net/docs/current/javadoc/net/sourceforge/stripes/controller/DynamicMappingFilter.html中所述。
该站点是实时的,并且运行良好...除非有人尝试使用像http://example.com/home/anything这样的url。这会导致对我的HomeActionBean的无限循环调用,直到我最终得到一个StackOverflowError!
有没有人经历过同样的事情,你知道如何防止这种情况发生吗?
非常感谢。爱德华多
附注:下面是关于实现的一些细节。我已经创建了一个演示,其中包含一个简单的Test action bean和JSP。
TestActionBean
@UrlBinding("/test")
public class TestActionBean extends BaseActionBean implements ActionBean {
@DefaultHandler
public Resolution test() {
return new ForwardResolution("test.jsp");
}
}Test.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Test infinite loop</title>
</head>
<body>
blabla
</body>
</html>`WEB.XML
<filter>
<display-name>Stripes Filter</display-name>
<filter-name>StripesFilter</filter-name>
<filter-class>net.sourceforge.stripes.controller.StripesFilter</filter-class>
<init-param>
<param-name>ActionResolver.Packages</param-name>
<param-value>pt.company.commons.stripes.action</param-value>
</init-param>
<init-param>
<param-name>ActionBeanContext.Class</param-name>
<param-value>pt.company.commons.stripes.action.CustomActionBeanContext</param-value>
</init-param>
<!-- The parameter tells Stripes to use the Spring interceptor -->
<init-param>
<param-name>Interceptor.Classes</param-name>
<param-value>net.sourceforge.stripes.integration.spring.SpringInterceptor</param-value>
</init-param>
...
<filter-mapping>
<filter-name>StripesFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter-mapping>
<filter-name>StripesFilter</filter-name>
<servlet-name>StripesDispatcher</servlet-name>
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
<filter>
<description>Dynamically maps URLs to ActionBeans.</description>
<display-name>Stripes Dynamic Mapping Filter</display-name>
<filter-name>DynamicMappingFilter</filter-name>
<filter-class>
net.sourceforge.stripes.controller.DynamicMappingFilter
</filter-class>
<init-param>
<param-name>ActionResolver.Packages</param-name>
<param-value>pt.company.common.stripes.action</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>DynamicMappingFilter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
<servlet>
<servlet-name>StripesDispatcher</servlet-name>
<servlet-class>net.sourceforge.stripes.controller.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>StripesDispatcher</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>发布于 2014-10-25 16:54:53
我无法解释这种行为,但我曾经在一个actionBean上注意到它,它显示了一个包含iframes的页面,其中有一个相对路径作为它们的源属性。src属性本身指向其他操作bean。
<iframe src="imagelist"></iframe>
<iframe src="mastertable/collections"></iframe>一旦我切换到绝对路径,重定向循环就消失了。
<iframe src="${pageContext.request.contextPath}/imagelist"></iframe>
<iframe src="${pageContext.request.contextPath}/mastertable/collections"></iframe>https://stackoverflow.com/questions/26550400
复制相似问题