`
wuyuwentian
  • 浏览: 1449 次
  • 来自: ...
最近访客 更多访客>>
社区版块
存档分类
最新评论

发现 struts2+spring的一个bug

阅读更多
今天开发中遇到一个问题,就是当使用result 的 type 为 chain的时候 如果action交给spring 来管理的话,那么这个跳转是不经过action代码的,而是直接跳到result所指定的页面里去了  如:
执行过程如下:
action1代码->action1 result -> action2 result(这里没有经过action2 的代码)
而且这里还有个问题
如果action1 result的name配置的是input的话,那么action2 result的名字必须要有name为input的配置,
不然会提示找不到result name 为input的配置

  ,而如果不交给spring 来管理的话,那么这个步骤是正常的,执行过程如下:
action1代码->action1 result ->action2代码 —> action2 result

我想这应该算是一个bug吧,我想这应该是spring的aop引起的问题,接下来想找找引起的原因,如果有人也碰到过这样的问题,请不吝赐教

正常的struts.xml配置如下


 <package name="chain" extends="struts-default" namespace="/chain">
       		<action name="toTest">
			<result type="freemarker">/WEB-INF/templete/test1.ftl</result> 
		</action>
		<action name="step2" class="com.payx.www.web.test.TestChainAction" method="step2">
			<result name="input" type="freemarker">
			   /WEB-INF/templete/test3.ftl
			</result>
			<result name="success" type="freemarker">/WEB-INF/templete/test2.ftl</result>
		</action>		
        <action  name="step1" class="com.payx.www.web.test.TestChainAction" method="step1" >
          <result name="input" type="chain">
              <param name="actionName">step2</param>
			  <param name="namespace">/chain</param>
		  </result>
		  <result name="success" type="freemarker">/WEB-INF/templete/test4.ftl</result>
        </action>
		
    </package>



java代码如下



public class TestChainAction {
	
	private String test;
	private String test2;
	public String getTest() {
		return test;
	}
	public void setTest(String test) {
		this.test = test;
	}
	public String getTest2() {
		return test2;
	}
	public void setTest2(String test2) {
		this.test2 = test2;
	}
	
	public String step1(){
		if(test.equals(""))
			return "input";
		
		
		return "success";
	}
	
	public String step2(){
		if(test2==null)
			return "input";
		
		
		return "success";
	}

}





非正常的struts.xml配置如下


 <package name="chain" extends="struts-default" namespace="/chain">
       		<action name="toTest">
			<result type="freemarker">/WEB-INF/templete/test1.ftl</result> 
		</action>
		<action name="step2" class="testChainAction" method="step2">
			<result name="input" type="freemarker">
			   /WEB-INF/templete/test3.ftl
			</result>
			<result name="success" type="freemarker">/WEB-INF/templete/test2.ftl</result>
		</action>		
        <action  name="step1" class="class="testChainAction" method="step1" >
          <result name="input" type="chain">
              <param name="actionName">step2</param>
			  <param name="namespace">/chain</param>
		  </result>
		  <result name="success" type="freemarker">/WEB-INF/templete/test4.ftl</result>
        </action>
		
    </package>



java代码如下



public class TestChainAction {
	
	private String test;
	private String test2;
	public String getTest() {
		return test;
	}
	public void setTest(String test) {
		this.test = test;
	}
	public String getTest2() {
		return test2;
	}
	public void setTest2(String test2) {
		this.test2 = test2;
	}
	
	public String step1(){
		if(test.equals(""))
			return "input";
		
		
		return "success";
	}
	
	public String step2(){
		if(test2==null)
			return "input";
		
		
		return "success";
	}

}






分享到:
评论
11 楼 acis_ 2010-11-29  
wuyuwentian 写道
6 楼 撒不哈哈 2009-03-10   回复 删除
回复楼主,不是bug.在action配置里加上拦截器chain和basicStack就行了
mmt 写道

我也遇见这个问题了,头大,不知现在你解决了?


6楼的兄弟不是说出解决办法了吗

我在Action里加上了chain和basicStack的拦截器,还是不行。
<interceptor-ref name="defaultStack"></interceptor-ref>
<interceptor-ref name="chain"></interceptor-ref>
<interceptor-ref name="basicStack"></interceptor-ref>
请问楼主,是什么原因
10 楼 wuyuwentian 2009-06-03  
6 楼 撒不哈哈 2009-03-10   回复 删除
回复楼主,不是bug.在action配置里加上拦截器chain和basicStack就行了
mmt 写道

我也遇见这个问题了,头大,不知现在你解决了?


6楼的兄弟不是说出解决办法了吗
9 楼 mmt 2009-06-02  
我也遇见这个问题了,头大,不知现在你解决了?
8 楼 youshen 2009-05-12  
无聊....
回帖还要测验....
没心情了,你们慢慢想吧
7 楼 wuyuwentian 2009-04-10  
谢谢楼下的
6 楼 撒不哈哈 2009-03-10  
回复楼主,不是bug.在action配置里加上拦截器chain和basicStack就行了
5 楼 撒不哈哈 2009-03-08  
我也碰到问题了。不知LZ解决问题了没??
有信息的话发我邮箱:xuyunqin@gmail.com
可以探讨下哈。。
4 楼 wuyuwentian 2009-01-09  
godson_2003 写道
我觉得addActionError()跳转不是不正常 是因为产生了error跳转到input了吧

这个error信息是我加入,但是他跳转到自己的input也是我预期的结果,问题是他跳转到input后,不跳input所指向的action2 java代码,而是直接跳到action2 result为input的结果去了,感觉很奇怪,不知道struts2为什么要这样处理
3 楼 godson_2003 2009-01-09  
我觉得addActionError()跳转不是不正常 是因为产生了error跳转到input了吧
2 楼 wuyuwentian 2009-01-08  
发现addActionMessage是可以用的,看来以后需要使用chian跳转错误页面,又想保存信息的话只能用addActionMessage了
1 楼 wuyuwentian 2009-01-08  
经过查找发现问题所在,好像又不是 spring引起的
只要action1里执行了addActionError()跳转就不正常了。我将继续跟进

相关推荐

    shiro+hibernate4+struts2+spring+easyui+fusioncharts

    1,shiro+hibernate4+struts2+spring+easyui+fusioncharts部分bootstrap样式全注解零配置简单权限管理web项目 2,简单shiro权限管控 细度到按钮 3,安装方法按config.properties参数配置你的数据库 4,运行dbsql.sql 5,...

    Struts2+hibernate+spring的常见面试题

    Struts2是一个基于Java的开源框架,用于构建Web应用程序。它是Apache Struts1的升级版本,具有更高的灵活性、易用性和可扩展性。Struts2是建立在OpenSymphony的WebWork框架基础之上,它的核心组件包括Action、...

    struts2+spring集成bug——使用AOP时可能遇到的问题分析

    但有些Struts2的插件或者拦截器可能期望动作类是一个接口,这可能导致问题。确保你知道哪种代理模式正在被使用,并且它与你的代码兼容。 4. **依赖注入问题**:Spring的依赖注入可能会在Struts2的生命周期中出现...

    struts2+spring+hibernate公司管理系统

    雇员管理 角色管理 权限管理 部门管理 考勤管理 缺勤管理,struts2+spring+hibernate具有良好的可扩展性,这是我上次的一个系统的扩展版本,并且修正了几个BUG!希望您能够从这里得到你想要的启发,也渴望前辈指点...

    struts2+hibernate+spring

    Struts2是Struts1的升级版,它是一个基于MVC设计模式的Web应用框架,主要负责处理用户请求和展示结果。Struts2的核心是Action,它接收HTTP请求,执行业务逻辑,并通过Result返回相应的视图。此外,Struts2还提供了...

    Ftp在线管理系统(struts2+hibernate3+spring2+jquery实现的)

    自己用struts2+hibernate3+spring2+jquery做的Ftp在线管理系统,由于要管理的网站太多,用Ftp本子查询不方便所以做了这个系统。(注:在applicationContent.xml 里配置有自动创建表结构那一项,不过已经注释了,放开...

    struts2+Hibernate+Spring学习示例

    可以拿这个Demo和Struts2_Test 和 Struts2_Hibernate_Test比较一下,认真看的话,你会发现更多有用的信息, 至少能够搞清楚Hibernate到底是做什么的,Spring的功能强大在哪里可见一斑。 特别提醒,在开发过程中,...

    struts2.3.8+spring3.2.1+hibernate4.2.0整合jar包

    例如,当用户发送一个请求到服务器,Struts2会处理这个请求并调用相应的Action,Action在Spring的帮助下获取需要的服务(如DAO),然后通过Hibernate进行数据库操作。这种方式降低了各组件间的耦合,提高了代码的可...

    struts2-spring-plugin-2.5.13.jar

    搭建struts2 + spring框架时需要使用的关联jar struts.xml中action的属性class引用applicationContext中bean的属性id指向的值

    struts+hibernate+spring+blob

    struts+hibernate+spring+blob 三个框架集成了一下,主要包括利用struts的上传附件功能,并把上传的图片存储到oracle的blob字段。并提供显示。 没做过多的限制,还有很多bug别见怪,功能跑得通!

    struts2.3.16 + hibernare4.3.4 + spring4.0.2整合jar包

    这样,一个基于Struts2、Hibernate4和Spring4的Web应用就可以开始开发了。在实际开发过程中,需要注意版本兼容性问题,确保各个框架之间的协同工作。同时,也要关注框架的安全更新,及时升级到更安全的版本,以防范...

    struts2+hibernate4+spring3+maven+easyui

    1. **Struts2**: Struts2 是一个基于MVC(模型-视图-控制器)设计模式的Web应用框架,用于简化Java Servlet和JSP的开发。它提供了强大的动作调度、拦截器、结果类型和国际化等功能,帮助开发者创建结构清晰、易于...

    Eclipse搭建SSH(Struts2.5.10+Spring4.3.7+Hibernate5.2.9)Demo

    在IT行业中,SSH框架组合是Java Web开发中的一个经典选择,它由Struts2、Spring和Hibernate三个组件组成。这个"Eclipse搭建SSH(Struts2.5.10+Spring4.3.7+Hibernate5.2.9)Demo"是一个实践教程,帮助开发者了解如何在...

    struts 2.3.7+spring3.2.0+MyBatis3.1

    Struts 2.3.7、Spring 3.2.0 和 MyBatis 3.1 是三个在Java企业级开发中广泛使用的开源框架,它们分别负责不同的职责,共同构建了一个强大的后端服务架构。 **Struts 2.3.7** 是一个基于MVC(Model-View-Controller...

    基于最新的SSH(Struts2.3.12+Spring3.2.2+Hibernate4.20)+ jquery EasyUI1.3.2的担保公司OA系统

    标题中的“基于最新的SSH(Struts2.3.12+Spring3.2.2+Hibernate4.2.0)+ jquery EasyUI1.3.2的担保公司OA系统”表明这是一个集成开发的Web应用程序,主要用于担保公司的办公自动化(OA)。SSH是Struts2、Spring和...

    Bug管理系统 struts2+sping2.5+hibernate3(2-2)

    本程序是作者学习struts spring hibernate构架后为了练习开发的一个小程序。开发此程序的目的是为了验证框架技术在项目中的应用。本程序尽量包含了开发当中遇到的一些问题及解决方案。同时欢迎广大网友到作者的群内...

    ssh_jar包(struts2+spring3+hibernate3)

    SSH是三个流行开源框架的缩写,分别是Spring、Struts2和Hibernate,它们在Java Web开发中被广泛使用。这个“ssh_jar包”显然包含了这三个框架的核心库,供开发者在构建基于SSH的项目时使用。 **Spring框架**是Java...

    开发Struts+Spring应用

    Struts是MVC(模型-视图-控制器)架构的一个实现,主要用于处理前端请求和业务逻辑,而Spring则是一个全面的后端框架,提供依赖注入、AOP(面向切面编程)、事务管理等服务。 **Struts框架** Struts1是Apache软件...

    ssh Struts2.3.16.1+Hibernate4.3.4+Spring4.0.2 框架整合jar包

    SSH框架是Java开发中常用的三大开源框架Struts2、Hibernate和Spring的组合,它们各自负责应用程序的不同层面,共同构建了一个高效、灵活的企业级应用开发环境。这个SSH整合jar包是针对Struts2.3.16.1、Hibernate...

    java 进销存源码 Struts + Spring + Hibernate

    企业进销存系统,商品管理系统,系统功能完整,无BUG,界面洁简美观. ...版本:Struts2.0 、Spring 2.5 、Hibernate3 、Ext js 3.3 数据库: mySQL(含数据库脚本) 商品进销存业务功能完整,代码结构分层清晰。

Global site tag (gtag.js) - Google Analytics