项目采用的支撑框架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中同样写了对应的
private User user = new User();
private User getUser(){...}
private void setUser(User user){...}
奇怪的是获取不了页面传来的user对象属性,如果用getParemeter("user.userName")是可以获得值的.
但是在Action中再增加其它的拦截器如:
<interceptor-ref name="validationWorkflowStack" />
或者干脆增加:
<interceptor-ref name="defaultStack"/>
这样Action中的User对象就能顺利获取页面传来的属性值了.
<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>
但是这样又出现一个奇怪的问题.就是我的Action中的代码会多执行一次.例如
我的Action中默认的execute()方法中有一段:
user.setCreateTime(new Date())
user.setUserStatus(Constans.IS_LEGALITY);
.....
UserManager.save(user);
这段在execute()方法中的代码会在第一次保存完之后又返回重新执行一次.
这个时候程序当然就会报异常了,有些需要从页面上获得的属性在数据库中是必填的就会报值不能空的异常了.但是事实上是通过Debug可以发现程序的execute的方法重复执行了一次.且控制台也打印出两条insert语句了.刚开始我还以为是hibernate invert配置问题.后来通过debug排除这种问题.不知道这种原因有谁有较深入的了解.或者也同样出现个,请指教一下,谢谢
分享到:
- 2007-09-10 14:14
- 浏览 11957
- 评论(19)
- 论坛回复 / 浏览 (19 / 16664)
- 查看更多
相关推荐
4. **请求处理**:当用户发送请求时,Struts2框架会自动将请求参数绑定到Action类中的模型对象,然后调用Action的execute方法执行业务逻辑。 **三、ModelDriven模式的优点** 1. **代码简洁**:Action类的代码量...
4. **Action和Service的测试**:在Struts2中,Action类是处理用户请求的实体,它通常调用Service层来执行业务逻辑。Service层封装了与数据库或其他外部资源的交互。在单元测试中,Action的测试主要检查其接收请求、...
1. **Action配置**:了解如何在Struts2中创建Action类,定义Action的执行方法,并在struts.xml配置文件中进行映射。 2. **结果类型(Result Type)**:学习如何配置Result,特别是如何使用HTTP状态码和Content-Type...
1. **Action类**:在Struts2中,Action类是业务逻辑的载体,通常继承自`org.struts2.StrutsAction`或实现`com.opensymphony.xwork2.Action`接口。在这个DEMO中,你会看到一个名为`LoginAction`的类,它负责处理用户...
- Action的生命周期由容器管理,且执行方法为`execute()`。 - 测试Struts1的Action时,通常需要模拟整个Servlet环境,使用如StrutsTestCase等工具进行单元测试。 - **Struts2中的Action** - Struts2采用了更灵活...
5. **模型驱动(Model Driven)**:Struts2可以自动将请求参数绑定到Action的属性,实现模型驱动,简化了数据处理。 6. **值栈(Value Stack)**:Struts2使用值栈存储Action的属性,这些属性可以直接在JSP页面中...
7. **Model Driven**:Struts2支持模型驱动模式,可以让Action直接引用业务对象,简化开发。 8. **Plug-in Architecture**:Struts2的插件架构使得扩展和集成其他功能变得容易,如Tiles、Hibernate等。 9. **OGNL...
Struts2框架是一个基于Model-View-Controller(MVC)设计模式的Java Web应用程序框架,由Apache软件基金会维护。这个框架极大地简化了开发过程,提高了可维护性和可扩展性。Struts2通过整合多种优秀框架,如Tiles、...
Struts2是一个强大的Java web应用程序框架,它基于MVC(Model-View-Controller)设计模式,为开发者提供了构建可维护性、可扩展性极高的应用的解决方案。此压缩包文件"struts-2.2.3"包含了Struts2框架的源代码,这将...
Struts2是一个强大的Java web应用程序框架,用于构建和部署可维护、高性能的MVC(Model-View-Controller)架构的应用程序。它简化了MVC的实现,提供了丰富的特性集,使得开发者可以更专注于业务逻辑而不是繁琐的底层...
- **流程概述**:用户提交请求,Struts2核心过滤器接收并处理该请求,根据配置文件找到对应的Action,执行Action中的方法,然后根据返回的结果选择合适的视图进行展示。 1. **请求接收**:用户提交请求,Struts2的...
Action分为两种类型:Field-Driven Action 和 Model-Driven Action。 - **Field-Driven Action**:这种类型的Action是基于字段的,每个字段对应一个用户界面的输入。当Action被调用时,WebWork会自动将请求参数绑定...
动作有两种主要类型:Field-Driven Action 和 Model-Driven Action。Field-Driven Action更适合处理简单的表单提交,其中每个字段都直接映射到Action的属性。而Model-Driven Action则将整个业务对象(Model)作为...
- 使用模型驱动(Model-Driven)方式时,需要实现`ModelDriven`接口并重写`getModel()`方法,以返回模型对象供框架使用。 - 在URL参数中可以通过`getter`/`setter`方法传递值,例如:`/action?field=value`或`/...
5. **模型驱动(Model Driven)**:Struts2的模型驱动模式使得Action可以直接与域对象(通常是业务实体类)绑定,简化了数据处理过程。 6. **值栈(Value Stack)**:值栈是Struts2中用于存储请求数据和视图展示...
### Struts2内置拦截器简介 #### 一、概述 Struts2框架是Apache软件基金会下的一个开源项目,它提供了一种基于MVC(Model-View-Controller)设计模式的Web应用开发框架。Struts2的核心是拦截器(Interceptor)机制...
Struts2.3.15jar包是Apache Struts框架的一个特定版本,它是Java Web开发中的一个关键组件,尤其在基于MVC(Model-View-Controller)架构的应用程序设计中。Struts2作为一款强大的开源框架,为开发者提供了构建动态...
以下是关于Struts2中Action数据绑定的几种方法的详细说明: 1. **属性注解(Field Annotation)** Struts2支持使用JavaBeans的getter和setter方法进行数据绑定,但也可以通过在字段上添加注解来简化这一过程。例如...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web应用程序框架,它在Java社区中广泛使用,特别是在构建企业级Web应用时。这个"struts2学习代码"压缩包提供了一些实例和练习,帮助开发者深入理解和...