0

我有一个项目使用struts 2.1.8. 该项目是通过使用注释配置的struts2-convention-plugin。这是我在 web.xml 中的 struts 配置:

<filter>
  <filter-name>struts2Filter</filter-name>
  <filter-class>
    org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>  
    <filter-name>struts2Filter</filter-name>  
    <url-pattern>*.jsp</url-pattern>  
</filter-mapping>
<filter-mapping>   
    <filter-name>struts2Filter</filter-name>   
    <url-pattern>/struts/*</url-pattern>   
</filter-mapping>

struts.xml:

<constant name="struts.convention.default.parent.package" value="borrow-default" />
<constant name="struts.convention.package.locators" value="action" />
<constant name="struts.convention.package.locators.basePackage" value="com.abc.action" />
<constant name="struts.convention.result.path" value="/" />

A.java:

@Namespace("/regist")
public class A extends ActionSupport{
    @Action(value="/a", results = {@Result(location = "/a/test.jsp")})
    public String execute(){
        return SUCCESS;
    }
}

这是问题所在,我可以访问 urlhttp://localhost:8080/a/test.jsp和中的 test.jsp http://localhost:8080/regist/a.action,但我仍然可以访问 url 中的同一页面http://localhost:8080/a/test.action。我不知道为什么会发生这种情况,我的配置或代码有什么问题?


我还尝试了其他一些网址,似乎命名空间没有生效。

4

2 回答 2

1

在 web.xml 你的 url 模式是这样的:

<url-pattern>/struts/*</url-pattern>

但是你被放置 jsp 并从 /a/test.jsp 中获取它,一旦检查它......

于 2013-02-21T07:47:01.963 回答
0

我将struts升级到2.3.15.1,这个问题就消失了

于 2013-10-18T01:39:02.333 回答