如何使用Struts2更改默认的JSP /模板位置

我正在开发一个在Eclipse中使用Struts2的新Java EE应用程序。 我想将JSP文件保存在源文件夹( src/main/jsp )中而不是WebContent 。 部署后,所有源文件都将复制到WebContent/WEB-INF/classes 。 这也具有使jsp文件无法直接访问的额外效果(我希望一切都需要动作干预)。 这意味着要显示结果,我必须这样做:

 WEB-INF/classes/index.jsp 

是否可以设置jsp文件的默认位置,以便只有index.jsp足以引用它们? 理想情况下,文件也会位于WEB-INF/jsp而不会与类混合。

我看到spring有这个function 。 我希望Struts2能做同样的事情。

您可以创建一个常量配置参数,例如

  

然后将此常量注入自定义dispatcher结果。 将其添加到您的默认包:

    

实现很简单,只需在配置结果时为结果的位置添加前缀即可。

 public class MyServletDispatcherResult extends ServletDispatcherResult { private String resultPath; public String getResultPath() { return resultPath; } @Inject(value = "struts.result.path", required = false) public void setResultPath(String resultPath) { this.resultPath = resultPath; } @Override public void setLocation(String location) { super.setLocation(resultPath+location); } public MyServletDispatcherResult() { super(); } // @Inject // public MyServletDispatcherResult(String location) { // // super(resultPath+location); // } } 

然后,您可以在结果中使用普通位置,例如

 /index.jsp