struts.convention.result.path 在 Struts2 中不工作

struts.convention.result.path is not working in Struts2

我目前的项目结构如下

WebContent
   WEB-INF
   View
     TestPage.jsp
     other JSP pages...

我的任务是将所有 JSP 页面放入文件夹 WEB-INF 并在项目中进行所有相关更改。

WebContent
   WEB-INF
      View
        TestPage.jsp
        other JSP pages...

所以我必须更新 struts.xml

中的所有结果标签
<result name="success">/View/TestPage.jsp</result>

<result name="success">/WEB_INF/View/TestPage.jsp</result>

在网上搜索后我找到了一个插件——struts约定插件来实现这个,但是它遵循它的命名约定。

是否可以重写Struts约定的插件配置(不会遵循其命名约定)?我也试过了,但没有反应。我的 struts.xml

<struts>
    <constant name="struts.devMoade" value="true" />
    <constant name="struts.convention.result.path" value="/WEB-INF/View/" />

    <package name="test" extends="struts-default" namespace="/">
        <action name="hello1" class="testAction.Hello1Action">
            <result name="success">/TestPage.jsp</result>
        </action>
    </package>
</struts>

当我运行

localhost:8080/project-name/hello1

如果我将 struts.xml 中的结果更改为

,它会显示错误 404.But
<result name="success">/WEB-INF/View/TestPage.jsp</result>

它工作正常。

我不想更改所有结果tags.How我可以通过在一个地方进行更改来实现吗?

约定插件使用不同的配置提供程序,此常量仅适用于约定创建的配置。

<constant name="struts.convention.result.path" value="/WEB-INF/View/" />

如果您想覆盖约定配置,您应该使用注释。

package testAction;

@ParentPackage("json-default")
@Namespace("/")
@Action(value="hello1", results=@Result(name = "success", location="TestPage.jsp"))
public class Hello1Action extends ActionSupport {
}