2010-05-06 139 views
1

我试图在我的项目中实现Struts 2注释,但我不知道如何。Struts2 - 如何使用Struts2注释?

我加入了公约,插件版本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

我还没有使用带注释的Struts2(Struts2的版本是?你正在学习一些教程或文档?)。但应该不是位置属性(在Result annotation)而不是

0

日志说什么?你有没有尝试使用/HelloWorld.jsp来获得“成功”。我认为struts框架没有找到资源并且正在加载相同的页面。

当您使用/HelloWorld.jsp时,希望您会看到结果页面。

1

约定使用不同的约定将CamelCaseAction名称转换为url和jsp的名称。如果您正在使用公约的违约,我认为你应该使用的名称如下:

ActionClass:HelloWorldAction.java

JSP:你好,world.jsp

操作:你好世界

另外,请注意,默认情况下,convention将在WEB-INF/content上查找您的JSP。文档有点浅显,您必须通过示例了解,但您可以查阅所有默认值:http://struts.apache.org/2.x/docs/convention-plugin.html