我跟随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
为什么会这样?
答案 0 :(得分:1)
由于Struts2将在
中查找您的JSPWebContent/@ResultPath/@Namespace/@Result
而不是做
@ResultPath("/")/@Namespace("/User")/@Result("pages/welcome_user.jsp")
您可以从
移动JSPWebContent/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的例子只适用于课堂上的注释,而我正在等待更多专家来满足我们的好奇心。同时,这应该是你需要的。