gpt4 book ai didi

java - 类级别和方法级别的@Result

转载 作者:行者123 更新时间:2023-11-30 07:48:45 25 4
gpt4 key购买 nike

我正在关注 Struts 2 Hello World Annotation Example Mkyong 的教程:

@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)注释从类级别移动到方法级别:

@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:

@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 的示例仅适用于类级别的注释,我正在等待更专家的人来满足我们的好奇心;同时,这应该就是您所需要的。

关于java - 类级别和方法级别的@Result,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33563588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com