@Result在课堂级别和方法级别

时间:2015-11-06 09:35:09

标签: java struts2 annotations struts-action struts2-convention-plugin

我跟随Mkyong的Struts 2 Hello World Annotation Example教程:

@Namespace("/User")
@ResultPath(value="/")
@Action(value="/welcome", 
      results={@Result(name="success", location="pages/welcome_user.jsp")})
public class WelcomeUserAction extends ActionSupport {

    public String execute(){
        return SUCCESS;
    }
}

访问网址http://localhost:8080/project_name/User/welcome可以正常使用。

现在我试图将@Action(以及@Result)注释从类级别移动到方法级别:

@Namespace("/User")
@ResultPath(value="/")
public class WelcomeUserAction extends ActionSupport {

    @Action(value="/welcome", 
          results={@Result(name="success", location="pages/welcome_user.jsp")})     
    public String execute(){
        return SUCCESS;
    }
}

但是这样做之后,我收到404错误:

  找不到

/project_name/pages/welcome_user.jsp

我的JSP在

/WebContent/User/pages  

为什么会这样?

1 个答案:

答案 0 :(得分:1)

由于Struts2将在

中查找您的JSP
WebContent/@ResultPath/@Namespace/@Result

而不是做

@ResultPath("/")/@Namespace("/User")/@Result("pages/welcome_user.jsp")

您可以从

移动JSP
WebContent/User/pages/welcome_user.jsp

WebContent/pages/User/welcome_user.jsp

然后使用

@ResultPath("/pages")/@Namespace("/User")/@Result("welcome_user.jsp")

此时,以下两种配置都应该有效:

{strong>级别<{strong>

@Action

@ResultPath(value="/pages")
@Namespace("/User")
@Action(value="/welcome", results={@Result(name="success", location="welcome_user.jsp")})
public class WelcomeUserAction extends ActionSupport {

    public String execute(){
        return SUCCESS;
    }
}

方法级<{1}}

@Action

我不知道为什么Mkyong的例子只适用于课堂上的注释,而我正在等待更多专家来满足我们的好奇心。同时,这应该是你需要的。