我是靠谱客的博主 激动小猫咪,最近开发中收集的这篇文章主要介绍Struts2 Action方法执行两次的问题?model-driven奇怪现象,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

项目采用的支撑框架Struts2.09,Spring2 Hibernate3.2.在项目开发过程中.采用Struts2.09开发中采用model-driven的方式来获取对象产生了一些奇怪的问题.第一个问题:
我在action中如果只配置:
<interceptor-ref name="model-driven"/>
例如在我的UserAction就获取不到User对象.user.jsp页面我是按照model-driven的写法如:
user.userName user.userPasswd用的也是strtus2的标签.在Action中同样写了对应的
[code]private User user = new User();
private User getUser(){...}
private void setUser(User user){...}[/code]
奇怪的是获取不了页面传来的user对象属性,如果用getParemeter("user.userName")是可以获得值的.
但是在Action中再增加其它的拦截器如:
<interceptor-ref name="validationWorkflowStack" />
或者干脆增加:
<interceptor-ref name="defaultStack"/>
这样Action中的User对象就能顺利获取页面传来的属性值了.
[code] <package name="userManger" extends="struts-default">
<action name="albumAction" class="com.xx.struts.action.UserAction">
<result name="success" type="dispatcher">
<param name="location">/userinfo.jsp</param>
</result>
<interceptor-ref name="model-driven"/>
<interceptor-ref name="validationWorkflowStack" />
</action>
</package>[/code]但是这样又出现一个奇怪的问题.就是我的Action中的代码会多执行一次.例如
我的Action中默认的execute()方法中有一段:
[code]user.setCreateTime(new Date())
user.setUserStatus(Constans.IS_LEGALITY);
.....
UserManager.save(user);[/code]
这段在execute()方法中的代码会在第一次保存完之后又返回重新执行一次.
这个时候程序当然就会报异常了,有些需要从页面上获得的属性在数据库中是必填的就会报值不能空的异常了.但是事实上是通过Debug可以发现程序的execute的方法重复执行了一次.且控制台也打印出两条insert语句了.刚开始我还以为是hibernate invert配置问题.后来通过debug排除这种问题.不知道这种原因有谁有较深入的了解.或者也同样出现个,请指教一下,谢谢

最后

以上就是激动小猫咪为你收集整理的Struts2 Action方法执行两次的问题?model-driven奇怪现象的全部内容,希望文章能够帮你解决Struts2 Action方法执行两次的问题?model-driven奇怪现象所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(37)

评论列表共有 0 条评论

立即
投稿
返回
顶部