1

我目前的项目结构如下struts.convention.result.path不能在Struts2工作

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

我的任务是把文件夹WEB-INF内的所有JSP页面和做的相对变化项目。

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.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 

它显示错误404.But如果我在struts.xml的改变的结果

<result name="success">/WEB-INF/View/TestPage.jsp</result> 

它工作正常。

我不想在所有结果标签中进行更改。如何通过在一个位置进行更改来实现此目的?

+0

如果您已经阅读过链接问题,为什么您根据此问题中接受的答案设置了错误的位置? – 2015-02-06 11:45:51

+0

我也试过,但没有工作。 – 2015-02-06 11:55:57

回答

0

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

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

如果你想重写约定配置,你应该使用注释。

package testAction; 

@ParentPackage("json-default") 
@Namespace("/") 
@Action(value="hello1", [email protected](name = "success", location="TestPage.jsp")) 
public class Hello1Action extends ActionSupport { 
} 
+0

我们不能通过配置文件 - struts.xml来使用它吗? – 2015-02-09 08:31:11

+0

您在'struts.xml'中写入的常量,操作配置写入注释中。来自'struts.xml'的动作配置删除。 – 2015-02-09 08:35:07

+0

我们不能在struts.xml中使用动作配置而不是注释吗? – 2015-02-09 08:36:46