如何使用 Struts2 更改默认 JSP/template 位置
How to change default JSP/template location with Struts2
我正在开发一个在 Eclipse 中使用 Struts2 的新 Java EE 应用程序。我想将 JSP 文件保留在源文件夹 (src/main/jsp
) 中,而不是 WebContent
中。部署后,所有源文件都会复制到 WebContent/WEB-INF/classes
。这也具有使 jsp 文件无法直接访问的额外效果(我希望一切都需要操作干预)。这意味着要显示结果,我必须这样做:
<result name="SUCCESS">WEB-INF/classes/index.jsp</result>
是否可以设置 jsp 文件的默认位置,以便 index.jsp
足以引用它们?理想情况下,文件也应位于 WEB-INF/jsp
中,而不是与 类.
混合
我看到了 spring has this feature。我希望 Struts2.
也能得到同样的结果
您可以创建一个常量配置参数,例如
<constant name="struts.result.path" value="/WEB-INF/classes" />
然后将此常量注入自定义 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>
我正在开发一个在 Eclipse 中使用 Struts2 的新 Java EE 应用程序。我想将 JSP 文件保留在源文件夹 (src/main/jsp
) 中,而不是 WebContent
中。部署后,所有源文件都会复制到 WebContent/WEB-INF/classes
。这也具有使 jsp 文件无法直接访问的额外效果(我希望一切都需要操作干预)。这意味着要显示结果,我必须这样做:
<result name="SUCCESS">WEB-INF/classes/index.jsp</result>
是否可以设置 jsp 文件的默认位置,以便 index.jsp
足以引用它们?理想情况下,文件也应位于 WEB-INF/jsp
中,而不是与 类.
我看到了 spring has this feature。我希望 Struts2.
也能得到同样的结果您可以创建一个常量配置参数,例如
<constant name="struts.result.path" value="/WEB-INF/classes" />
然后将此常量注入自定义 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>