我正在研究在Eclipse中使用Struts2的新Java EE应用程序。我想将JSP文件保留在源文件夹(src/main/jsp)中,而不是WebContent。部署后,所有源文件都将复制到WebContent/WEB- INF/classes。这还具有使jsp文件直接不可访问的额外效果(我希望所有事情都需要操作干预)。这意味着要显示结果,我必须这样做:
src/main/jsp
WebContent
WebContent/WEB- INF/classes
<result name="SUCCESS">WEB-INF/classes/index.jsp</result>
是否可以设置jsp文件的默认位置,以便index.jsp足以引用它们?理想情况下,文件也应位于其中,WEB-INF/jsp并且不会与类混合。
index.jsp
WEB-INF/jsp
我看到那个spring有这个功能。我希望Struts2也能做到这一点。
您可以创建一个常量配置参数,例如
<constant name="struts.result.path" value="/WEB-INF/classes" />
然后将此常量注入自定义dispatcher结果。将此添加到默认包:
dispatcher
<result-types> <result-type name="dispatcher" default="true" class="struts.results.MyServletDispatcherResult" /> </result-types>
实现很容易,您只需在配置结果后在其位置添加前缀。
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); // } }
然后,您可以在结果中使用普通位置,例如
<result name="SUCCESS">/index.jsp</result>