@Result 在 class 级别和方法级别
@Result at class level and method level
我正在学习 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;
}
}
访问 URL http://localhost:8080/project_name/User/welcome
工作正常。
现在我正在尝试将 @Action(以及因此的 @Result)注释从 class 级别移动到方法级别:
@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
is not found.
我的 JSP 在
/WebContent/User/pages
为什么会这样?
因为 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")
此时,以下两种配置都应该起作用:
@Action
处于class水平:
@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;
}
}
@Action
在 方法级别:
@ResultPath(value="/pages")
@Namespace("/User")
public class WelcomeUserAction extends ActionSupport {
@Action(value="/welcome", results={@Result(name="success", location="welcome_user.jsp")})
public String execute(){
return SUCCESS;
}
}
我不知道为什么 Mkyong 的示例只适用于 class 级别的注释,我正在等待更专业的人来满足我们的好奇心;同时,这应该是你需要的。
我正在学习 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;
}
}
访问 URL http://localhost:8080/project_name/User/welcome
工作正常。
现在我正在尝试将 @Action(以及因此的 @Result)注释从 class 级别移动到方法级别:
@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
is not found.
我的 JSP 在
/WebContent/User/pages
为什么会这样?
因为 Struts2 将在
中查找您的 JSPWebContent/@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")
此时,以下两种配置都应该起作用:
@Action
处于class水平:
@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;
}
}
@Action
在 方法级别:
@ResultPath(value="/pages")
@Namespace("/User")
public class WelcomeUserAction extends ActionSupport {
@Action(value="/welcome", results={@Result(name="success", location="welcome_user.jsp")})
public String execute(){
return SUCCESS;
}
}
我不知道为什么 Mkyong 的示例只适用于 class 级别的注释,我正在等待更专业的人来满足我们的好奇心;同时,这应该是你需要的。