`
zgw06629
  • 浏览: 30468 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

struts2 动态改变Action resultName

阅读更多

两个目标场景 同一业务逻辑 只是展现页面不同(如标清 高清)

目前的线上程序均是只支持场景1:标清

但现要求亦支持高清

于是想能不能在尽量少的改变原代码的情况下 满足这一业务目标

我一开始的思路是:

添加一请求参数 用以标识何种场景 如epgCode

同时添加一拦截器

return invocation.invoke()+"_"+epgCode

且struts配置文件修改为

<result name="toLogin_010101">/jsp/payment/login.jsp</result>
<result name="toLogin_010102">/jsp/payment/login_hd.jsp</result>

但经测试 不起作用

原因为:

struts2 流程图

现征求可行方案 谢谢!

该业务场景适合使用AspectJ吗?

 

经折腾 发现官方有提供方便的解决方案

详见 com.opensymphony.xwork2.ActionInvocation setResultCode api

 

Sets the result code, possibly overriding the one returned by the action.

The "intended" purpose of this method is to allow PreResultListeners to override the result code returned by the Action.

If this method is used before the Action executes, the Action's returned result code will override what was set. However the Action could (if specifically coded to do so) inspect the ActionInvocation to see that someone "upstream" (e.g. an Interceptor) had suggested a value as the result, and it could therefore return the same value itself.

If this method is called between the Action execution and the Result execution, then the value set here will override the result code the action had returned. Creating an Interceptor that implements PreResultListener will give you this oportunity.

If this method is called after the Result has been executed, it will have the effect of raising an exception.


 

qtl { position: absolute; border: 1px solid #cccccc; -moz-border-radius: 5px; opacity: 0.2; line-height: 100%; z-index: 999; direction: ltr; } qtl:hover,qtl.open { opacity: 1; } qtl,qtlbar { height: 22px; } qtlbar { display: block; width: 100%; background-color: #cccccc; cursor: move; } qtlbar img { border: 0; padding: 3px; height: 16px; width: 16px; cursor: pointer; } qtlbar img:hover { background-color: #aaaaff; } qtl>iframe { border: 0; height: 0; width: 0; } qtl.open { height: auto; } qtl.open>iframe { height: 200px; width: 300px; }

  • 大小: 9.1 KB
分享到:
评论

相关推荐

    struts2 result转向到action

    ### Struts2 Result 转向到 Action 的深入解析 #### 一、基本概念与应用场景 **Struts2** 是一款流行的 Java Web 开发框架,它支持多种开发模式(如 MVC),并提供了一系列用于简化 Web 应用程序开发的功能。在 ...

    struts 2 action 动态调用

    ### Struts 2 Action 动态方法调用详解 #### 一、引言 在Struts 2框架中,Action动态方法调用是一项非常实用的功能。它允许开发者在一个Action类中定义多个处理方法,而不仅仅局限于传统的`execute()`方法。这种...

    struts2 action跳转action传参数

    - `&lt;result name="success" type="redirectAction"&gt;action2.action&lt;/result&gt;`:表示当action1执行成功后,会触发一个重定向,跳转到`action2.action`。 - **注意**:在这种情况下,无法直接通过struts.xml配置文件...

    struts2 result配置详解

    在 Struts2 框架中,Redirect 和 Redirect-action 是两个不同的 Result 配置类型。Redirect 配置用于重定向到一个新的 URL,而 Redirect-action 配置用于重定向到一个 Action。 Redirect-action 配置可以省略后缀名...

    去掉.action去掉.do字样 隐藏struts2 URL地址action, strus1的扩展名do也是同理.zip

    Struts2和Struts1是两个非常著名的Java Web框架,它们在处理请求时通常会在URL中显式地显示.action或.do后缀。然而,为了提供更友好的用户体验和增强安全性,有时我们需要隐藏这些扩展名。本篇文章将详细介绍如何在...

    struts2 result type 介绍

    在Struts2中,Result Type是由`struts-default.xml`配置文件中的`&lt;package&gt;`元素的`defaultResultType`属性指定的,默认情况下,这个值通常是“dispatcher”,意味着Action完成后会使用Dispatcher Result来渲染JSP...

    struts2中result类型之redirectAction

    在struts.xml或action类的注解中,你可以设置`result`元素的`type`属性为`redirectAction`来配置重定向结果。例如: ```xml &lt;action name="myAction" class="com.example.MyAction"&gt; &lt;result type="redirectAction...

    Struts2--为Action的属性注入值

    为Action的属性注入值是Struts2的一个关键特性,使得我们可以方便地从请求参数中获取数据并绑定到Action实例上,以便后续的业务处理。 这个特性主要依赖于Struts2的OGNL(Object-Graph Navigation Language)表达式...

    Struts2动态方法调用

    在struts.xml文件中,需要正确设置Action和方法的映射规则,确保请求能够正确地映射到Action方法。 综上所述,Struts2的动态方法调用是一种强大的特性,它提供了更灵活的请求处理方式,同时也需要注意安全性和性能...

    struts2的result标签使用

    Interceptor会在Action执行前后进行处理,通过改变Result的`name`值或抛出异常来影响跳转。 ### 8. 示例代码学习 在提供的压缩包文件中,`使用Result配置结果视图_第4页_下载资料`可能包含具体示例代码和解释,这...

    Struts2的bug----------关于Struts2中找不到Action的

    7. **Action代理**:Struts2使用CGLIB或Java动态代理创建Action的代理类。如果遇到问题,尝试禁用CGLIB,改为使用Java代理,或者反之。 8. **日志排查**:仔细查看Struts2的日志输出,它通常会提供找不到Action的...

    struts2 action 返回json方法(一)源码

    在实际开发中,可能需要处理更复杂的情况,如分页、过滤、排序等,此时可以利用Struts2的动态结果集或者自定义拦截器来实现。通过深入理解和实践,你将能够熟练地在Struts2框架下构建高效的数据交互接口。

    Struts2_Action

    此外,Struts2还提供了动态方法调用的机制,允许你在一个Action类中定义多种处理方式,而无需为每一种处理方式单独定义Action方法。通过在action标签中指定method属性可以实现动态方法调用。 以上内容介绍了Struts2...

    Struts2学习资源Result part1.rar

    2. **redirect**: 重定向Result类型,它会改变浏览器的URL,避免因为回退按钮导致的重复请求。例如: ```xml &lt;action name="myAction" class="com.example.MyAction"&gt; &lt;result type="redirect"&gt;/pages/success....

    struts2.0之action

    Struts2.0是Java Web开发中的一个框架,它的核心组件是Action,它负责处理用户的请求并进行业务逻辑处理。相较于Struts 1.x,Struts 2.0的Action模型有着显著的区别。 在Struts 1.x中,Action类需要继承`org.apache...

    struts2+json

    在struts.xml配置文件中,你可以定义一个Action,指定其结果类型为"json",并设置想要暴露给JSON的字段。 例如: ```xml &lt;action name="ajaxAction" class="com.example.AjaxAction"&gt; &lt;result type="json"&gt; ...

    struts2简单入门教程

    &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;filter-class&gt;org.apache.struts2.dispatcher.FilterDispatcher &lt;filter-name&gt;struts2&lt;/filter-name&gt; &lt;url-pattern&gt;/* ``` 第2步:编写Action类。在Struts2中,Action...

    Struts2 Result类型

    Struts2 Result类型是Struts2框架中一个关键的概念,它是控制Action执行后响应到何处的重要组件。在处理用户请求并执行相应的业务逻辑后,Action需要将结果返回给客户端,而Result类型就是用来定义这个返回过程的...

    struts2中动态填充下拉框的例子

    3. **设置Action属性**:查询结果应被设置为Action的一个属性,以便在视图层使用。例如,我们可以设置`private List&lt;String&gt; options;`,然后在`loadOptions()`方法中填充这个列表。 4. **配置Action**:在Struts2...

    struts2利用通配符调用同一个Action里面不同的方法

    在Struts2中,Action是业务逻辑处理的核心,而通配符的使用则是Struts2框架中一种灵活的配置方式,允许我们以更简洁的方式调用同一个Action中的不同方法。下面我们将深入探讨如何利用Struts2的通配符来实现这一功能...

Global site tag (gtag.js) - Google Analytics