我正在尝试在我的项目中实现Struts 2 Annotations,但我不知道如何。
我将convention-plugin v 2.1.8.1添加到我的 pom
我修改了 web.xml
...
<init-param>
<param-name>actionPackages</param-name>
<param-value>org.apache.struts.helloworld.action</param-value>
</init-param>
...
我的行动
package org.apache.struts.helloworld.action;
import org.apache.struts.helloworld.model.MessageStore;
import com.opensymphony.xwork2.ActionSupport;
import org.apache.struts2.convention.annotation.Result;
import org.apache.struts2.convention.annotation.Results;
@Results({
@Result(name="success", location="HelloWorld.jsp")
})
public class HelloWorld extends ActionSupport {
public String execute() throws Exception {
messageStore = new MessageStore() ; return SUCCESS;
}
我试图使用我的行动的jsp页面。
<body>
<h1>Welcome To Struts 2!</h1>
<p><a href="<s:url action='helloWorld'/>">Hello World</a></p>
</body>
当我按下与 helloWorld 操作相关联的链接时,它会将我发送到完全相同的页面。因此,从index.jsp开始,它将发送到index.jsp。
应该表现的方式:它应该将我发送给 HelloWorld.jsp 。
我将项目(一个非常简单的HelloWorld应用程序)上传到FileFront,也许有人看到了问题所在。 http://www.filefront.com/16364385/Hello_World.zip
答案 0 :(得分:1)
Convention使用不同的约定将CamelCaseAction名称转换为url和jsp的名称。如果您使用的是Convention的默认值,我相信您应该使用以下名称:
ActionClass:HelloWorldAction.java
JSP:hello-world.jsp
动作:hello-world
另请注意,默认情况下,约定会在WEB-INF / content上查找您的JSP。文档有点浅,您必须通过示例了解,但您可以在那里查阅所有默认值:http://struts.apache.org/2.x/docs/convention-plugin.html
答案 1 :(得分:0)
我没有使用带有注释的Struts2(Struts2版本?你正在学习一些教程或文档吗?)。但是 location 属性(在Result annotation中)不应该是值吗?
答案 2 :(得分:0)
日志说什么?您是否尝试过使用/HelloWorld.jsp获取“成功”。我认为struts框架找不到资源并且正在加载相同的页面。
当你使用/HelloWorld.jsp时,希望你会看到结果页面。