gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:18:45 24 4
gpt4 key购买 nike

我正在开发一个在 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" />

然后将此常量注入(inject)到自定义 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> 

关于java - 如何使用 Struts2 更改默认的 JSP/模板位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31458798/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com