`

【转】基于注解的struts action跳转 @Result 跳转到另一个action

阅读更多

初学ssh 基于注解的方式简单灵活,但是做一个例子的时候,添加用户AddUser 完成后 想页面跳转到 ListUser 这个action,

然后action 成功后 会跳转到list.jsp 显示 所以用户信息,

发现 网上几乎所有例子都是 @Result 成功跳转到一个jsp ,不成功跳转到另一个jsp

@Action(value="studentAdd",results={

@Result(name="success",location="/usersuc.jsp"),

@Result(name="error",location="/usererror.jsp")
})

那么如果 成功跳转到另一action个 怎么写呢,搜了半天 也没有想要的答案

就自己尝试

@Action(value="studentAdd",results={

@Result(name="success",location="/StudentList.action"),

@Result(name="error",location="/error.jsp")
}) 这是错的 ,tomcat启动时 直接就报错 Exception starting filter struts2 , Unable to load configuration. - [unknown location]

如果不加 .action 后缀

@Action(value="studentAdd",results={

@Result(name="success",location="/StudentList"),

@Result(name="error",location="/error.jsp")
}) 这样虽然tomcat启动时不报错,但是添加用户页面成功 不成功会显示404错误 找不到action

偶然在一片文章中 看到

struts2 跳转类型 result type=chain、dispatcher、redirect(redirect-action)

dispatcher 为默认跳转类型,用于返回一个视图资源(如:jsp)
Xml代码 :

<result name="success">/main.jsp</result>
<result name="success">/main.jsp</result>
以上写法使用了两个默认,其完整的写法为:
<result name="success" type="dispatcher">
<param name="location">/maini.jsp</param>
</result>

用于页面转发,页面跳转过程一直是同一个线程,Action中的数据一直保存在。
location只能是页面,不能是另一个action(可用type="chain"解决)。

 

redirect 类型用于重定向到一个页面,另一个action或一个网址。
Xml代码:

<result name="success" type="redirect">aaa.jsp</result>
<result name="success" type="redirect">bbb.action</result>
<result name="success" type="redirect">www.baidu.com</result>

缺点:redirect把一个http返回码(SUCCESS)以及返回的页面位置一起重新发给web服务器,容纳后由web服务器产生一个新的HTTP请求,就会产生一个新的线程,保存在原来Action执行的线程中的数据就无法访问。
所以,result需要包含Action的数据,那么redirect不是一个可行的办法。因为新的HTTP请求时在Servlet容器的新的线程中处理的,ActionContext中的所有状态都不会存在。

处理方法:

(方法一):
<result name="topic" type="redirect">/topicAction!findTopics.do?topicId=${topicId}</result>
(方法二):
<result name="topic" type="redirect-action">
<param name="actionName">findTopics</param>
<param name="topicId">${topicId}</param>
</result>

 

redirect-action 结果类型使用ActionMapperFactory提供的ActionMapper来重定向请求到另外一个action
Xml代码:

<result name="err" type="redirect-action">
<param name="actionName">重定向的Action名</param>
<param name="namespace">重定向Action所在的名字空间</param>
</result>
redirect和redirect-action两种结果类型在使用上其实并没有什么区别,只是写法不同而已。

 

chain 用于把相关的几个action连接起来,共同完成一个功能。
Xml代码:

<action name="step1" class="test.Step1Action">
<result name="success" type="chain">step2.action</result>
</action>
<action name="step2" class="test.Step2Action">
<result name="success">finish.jsp</result>
</action>
处于chain中的action属于同一个http请求,共享一个ActionContext


plaintextj 结果类型用于直接在页面上显示源代码

Xml代码:

<result name="err" type="plaintext">
<param name="location">具体的位置</param>
<param name="charSet">字符规范(如GBK)</param>
</result>


既然这样 制定跳转类型 是不是就可以了呢, 找下面来写 果然就OK了

@Action(value="studentAdd",results={

@Result(name="success",type="chain",location="studentList")})

另外补充:同一个action中  一个方法跳转至另一个方法 "user"  为该action的命名

@Result(name = "success", location = "user", type = "chain", params = { "method", "index" })

分享到:
评论
1 楼 LZ645596034 2016-01-25  
非常感谢!!
chain 用于把相关的几个action连接起来,共同完成一个功能。
Xml代码:

<action name="step1" class="test.Step1Action">
<result name="success" type="chain">step2.action</result>
</action>
<action name="step2" class="test.Step2Action">
<result name="success">finish.jsp</result>
</action>
处于chain中的action属于同一个http请求,共享一个ActionContext

这个地方chain解决了我的问题,有一个错误:(这里应该不带.action)
<result name="success" type="chain">step2</result>

相关推荐

    基于注解的struts2的简单工程

    在工程的实现过程中,你可能会有一个名为`TestStruts`的Action类,其中包含了各种注解来定义Action的逻辑。每个Action方法通常对应一个用户交互的业务场景,比如登录、注册、查询等。每个方法可能使用`@Action`注解...

    Struts2 注解 Demo

    本教程将通过一个"Struts2注解Demo"来深入探讨Struts2中的注解用法,帮助开发者更高效地配置和管理Action类。 首先,Struts2的注解允许我们避免传统的XML配置,从而实现更加简洁、直观的编程方式。在`Struts2Demo`...

    基于注解驱动的Struts_Spring_Hibernate开发

    `@Action`注解用于标记一个方法为处理特定请求的Action,而`@Result`注解则用于指定执行完Action后跳转的视图页面。 **Spring框架** 是一个全面的企业级应用开发框架,包括依赖注入(DI)、面向切面编程(AOP)和...

    Struts2之Annotation注解配置使用案例struts013

    在这个例子中,`@Action`注解指定了动作名"saveUser",并定义了一个结果映射,当执行成功时跳转到"success.jsp"页面。 接着,`@Results`和`@Result`注解用于定义多个结果映射。每个`@Result`都代表一个特定的结果...

    strust2从一个工程跳转到另一个工程的页面

    在Struts2中,跳转到另一个工程的页面是通过Action和Result来实现的。 Action配置 在Struts2中,Action是一个核心概念,它负责处理用户的请求并返回响应。在上面的代码中,我们可以看到Action的配置是通过注解...

    struts2一个action处理多个请求 struts2实例

    如果希望一个Action处理多个请求,可以在同一个`&lt;action&gt;`元素内添加多个`&lt;result&gt;`子元素,每个`&lt;result&gt;`对应一个不同的请求。例如: ```xml &lt;action name="myAction" class="com.example.MyAction"&gt; &lt;result ...

    基于注解的spring struts hibernate 示例工程

    例如,@Action注解标识一个类或方法为处理请求的Action,@Result注解用于指定请求处理后的跳转页面。这种方式使得Action配置更加灵活,无需在struts.xml中硬编码。 Hibernate通过注解可以轻松地将Java对象映射到...

    SSH框架注解方式,struts自身创建Action

    当一个请求到达时,Struts2会根据Action注解中的配置找到相应的类,并创建实例执行请求。 **5. 整合流程** 用户发起HTTP请求,Struts2拦截器链首先处理请求,然后根据Action注解找到匹配的Action执行。Action执行...

    struts-2.5.14.1 基本框架 基于注解 返回页面 返回json数据

    Struts2是一个强大的Java web应用程序框架,用于构建和维护可扩展、模块化和易于管理的MVC(模型-视图-控制器)应用。版本2.5.14.1是Struts2的一个稳定版本,提供了许多增强的功能和性能优化。在本教程中,我们将...

    Struts2注解开发jar

    标题提到的"Struts2注解开发jar"主要指的是`struts2-convention-plugin`,这是一个Struts2的插件,它的主要作用是支持基于约定优于配置(Convention over Configuration)的开发模式。描述中提到的`struts2-...

    struts2注解必须包

    3. `@Result`: 这个注解用于指定Action执行后跳转的页面或者资源。 4. `@Param`: 用于将请求参数映射到Action方法的参数,可以进行类型转换和默认值设置。 5. `@Namespace`: 定义Action所在的命名空间,帮助组织和...

    Maven实现struts2注解

    例如,你可以使用`@Action`注解标记一个方法作为处理用户请求的Action,使用`@Result`注解定义处理后返回的结果页面。 以下是如何在Maven项目中设置Struts2注解的步骤: 1. **创建Maven项目**:首先,我们需要创建...

    Struts2 基于注解的文档上传与下载方法

    在Struts2中,可以使用`@Action`注解来定义一个处理用户请求的方法。例如: ```java @Action(value="upload", results={ @Result(name="success",location="/WEB-INF/contents/addAttachment.jsp"), @Result(name...

    struts2 Result类型

    Struts2 Result类型是Struts2框架中一个关键的概念,它是动作执行完成后跳转到下一个页面或处理逻辑的核心机制。Result类型定义了如何处理动作执行的结果,使得开发者能够灵活地控制应用程序的流程。 首先,我们...

    Struts2注解

    在Struts2中,我们需要配置一个名为`struts2`的filter,其filter-class是`org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter`。通过`init-param`标签,我们可以设置action包路径,例如`...

    struts2.3.4.1注解零配置

    Struts2.3.4.1是一个流行的Java Web框架的版本,它引入了注解支持,使得开发者可以实现“零配置”开发,大大简化了应用的配置过程。在这个"struts2.3.4.1注解零配置"的例子中,我们将深入探讨如何利用Struts2的注解...

    struts hibernate spring 全注解开发框架

    例如,`@Action`注解用于标记一个类或方法作为Struts2的Action,`@Result`注解则用来定义Action执行后的跳转页面。 Spring框架则是依赖注入(DI)和面向切面编程(AOP)的中心,提供了强大的企业级服务。在这个项目...

    一个基于注解的SSH框架的登录功能实现

    在基于注解的SSH框架中,我们不再需要在struts.xml中为每个Action进行繁琐的配置,而是可以直接在Action类上使用注解`@Action`来指定URL映射和结果视图。 **Spring** 框架则负责管理对象(如Action、Service、DAO等...

    struts2注解

    Struts2注解是框架提供的一种简化XML配置的方式,它允许开发者在Action类或方法上直接添加注解,实现Action、结果(Result)和拦截器(Interceptor)的配置。这种方式提高了代码的可读性和可维护性,同时也减少了XML...

    基于注解的spring+hibernate+struts2源码.rar

    在Struts2中,`@Action`注解标记Action类,`@Result`定义结果类型和跳转路径。`@Results`可以批量定义多个结果。`@Namespace`用于指定Action的作用域,`@ParentPackage`指定继承的配置包。同时,`@Param`注解可以...

Global site tag (gtag.js) - Google Analytics