如何使用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