input.jsp中可以直接使用User对象的属性: <body> <s:form action="AddUserModelAction"> <s:textfield name="userName" label="Your name" /> <s:textfield name="address.address" label="Your address" /> <s:textfield name="address.zipCode" label="Your zipCode" /> <s:textfield name="address.phone" label="Your phone" /> <s:submit/> </s:form> </body> success.jsp中可以直接访问User对象的属性: <body> <h4>User: <s:property value="userName" /> add success(by Model).</h4> <h4>Address:<s:property value="address.address" /></h4> <h4>zipCode:<s:property value="address.zipCode" /></h4> <h4>phone :<s:property value="address.phone" /></h4> </body>
import javax.annotation.Resource; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import com.jaeson.hibernatestudy.bean.User; import com.jaeson.springstudy.service.CommonService; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; @SuppressWarnings("all") @Scope("prototype") @Controller("userModelAction") public class UserModelAction extends ActionSupport implements ModelDriven<User> { /** * 在执行execute时,ValueStack已经获得模型对象的引用,在整个请求过程中框架一直使用该引用。 * 如果在execute内部改变了模型字段,框架不会察觉,这可能会导致数据不一致的问题。 */ @Override public String execute() { this.getCommonService().saveOrUpdate(this.user); //throw new RuntimeException("throw in UserAction"); return "success"; } @Override public void validate() { if (this.user.getUserName().length() == 0) { this.addFieldError("userName", "userName is required."); } } private User user = new User(); @Resource(name = "commonService") private CommonService commonService; @Override public User getModel() { return this.user; } public CommonService getCommonService() { return this.commonService; } public void setCommonService(CommonService commonService) { this.commonService = commonService; } }
相关推荐
综上所述,这个示例项目展示了如何在Struts2框架下使用ModelDriven模式处理用户请求,通过`Student`对象绑定表单数据,以及如何与数据库进行交互。对于初学者来说,这是一个很好的实践案例,涵盖了Struts2的基本操作...
在Struts2中,ModelDriven接口是一个非常实用的功能,它可以帮助我们更方便地处理Action类中的模型数据。这个项目案例和视频教程主要针对初学者,旨在深入理解如何使用Struts2的ModelDriven机制来接收和传递参数。 ...
综上所述,ModelDriven接口简化了模型数据的绑定,而拦截器提供了灵活的扩展机制,两者结合使用能极大地提高Struts2应用的开发效率和可维护性。文件"06-01_001"可能包含了更详细的示例代码或教程,可以帮助深入理解...
在Struts1.3中,页面跳转是常见的需求,它涉及到Action类、配置文件(struts-config.xml)以及JSP页面间的交互。本篇文章将深入探讨Struts1.3中的页面跳转机制及其相关知识点。 首先,页面跳转在Struts1.3中有两种...
4. **使用ModelDriven接口**:实现`ModelDriven`接口,创建一个Model对象,Struts2会自动将请求参数映射到Model对象。 5. **使用SAXResult**:在Action中定义一个类型为`List`或`Map`的属性,Struts2会将所有请求...
- 为了在Action和JSP之间传递分页信息,可以使用Struts2的拦截器(Interceptor)或者模型驱动(ModelDriven)特性,将分页对象绑定到Action上下文,然后在JSP中可以直接访问这些信息。 8. **实现分页导航**: - ...
8. **页面跳转与数据传递**:在Struts2中,Action类的方法返回的结果名对应一个视图,如jsp页面,同时可以通过ActionContext或ModelDriven接口将数据传递到视图。页面之间的跳转和数据传递是Struts2的一大特点,简化...
- **Struts1**: 使用标准的JSP页面作为视图层,页面上的数据显示主要依赖于JSP标签。 - **Struts2**: 引入了ValueStack的概念,这使得开发者可以在视图层直接访问Action中的数据。Struts2还支持多种视图技术,如...
在本文中,我们将深入探讨如何使用Struts2的`ModelDriven`接口以及如何控制URL,以实现`struts2-rest-showcase-2.1.8.war`项目中的功能。 首先,`ModelDriven`接口是Struts2提供的一种设计模式,用于将Action类与...
2. **配置文件**:Struts2使用XML配置文件(struts.xml或struts-default.xml)来定义Action类、结果页面以及它们之间的映射。例如,我们可能需要配置一个`<action>`元素,指定登录Action的类和执行方法。 3. **拦截...
Struts2内置了对OGNL的支持,可以方便地在JSP页面中使用OGNL表达式获取模型数据。 - **标签库**:Struts2提供了丰富的标签库,可以帮助开发者快速构建表单和页面元素,提高开发效率。 - **拦截器**:拦截器是Struts2...
- **Struts2**则使用了ValueStack来存储Action对象和视图数据,这种机制允许在不同的页面之间传递数据,从而实现了更加灵活的页面导航。 #### 数据类型转换 - **Struts1**使用ActionForm中的方法来转换表单提交的...
4. **模型驱动(ModelDriven)**:一种设计模式,允许Action类通过持有模型对象来访问和操作数据。 5. **值栈(Value Stack)**:Struts2中的一个重要概念,它存储了Action和结果视图之间的数据。Action中的属性会...
5. **JSP渲染**:在JSP页面上,我们可以使用Struts的标签库或EL表达式来遍历和显示数据。同时,也需要创建分页导航链接,让用户可以跳转到其他页。 三、具体实现细节 1. **创建Action**:创建一个名为`...
Struts2 ModelDriven模式是Java Web开发中一种常见的MVC框架设计模式,它在Struts2框架中扮演着重要的角色。这个模式的主要目的是简化Action类的编写,提高代码的可维护性和可读性。在Struts2中,ModelDriven模式...
- Struts2允许直接使用POJO作为模型数据,无需特定的`ActionForm`。 - 提供了`ModelDriven`接口,允许为每个Action配置不同的模型对象,增加了模型数据的灵活性和可扩展性。 ### 3. **表达式语言** #### Struts1:...
5. **ModelDriven模式**:Struts 2支持ModelDriven模式,可以将模型对象自动绑定到Action,简化了数据绑定过程。 6. **Tiles插件**:Tiles提供了一种方式来组织和重用页面布局,使得页面设计更加模块化和可复用。 ...
3. **ActionForm/ModelDriven**:在Struts2中,ActionForm类用于封装表单数据,但现在更推荐使用ModelDriven接口,它可以直接绑定到业务对象,简化了代码。 4. **拦截器(Interceptor)**:Struts2的拦截器机制允许...
- **Struts1**:使用标准JSP机制将对象绑定到视图页面。 - **Struts2**:使用“ValueStack”技术,标签库可以直接访问堆栈中的值,无需显式地将对象绑定到视图页面。 #### 八、类型转换的对比 - **Struts1**:使用...
5. **模型驱动(ModelDriven)**:Struts2提供了ModelDriven接口,允许Action类通过关联一个模型对象来简化数据处理。在这个系统中,可能有一个`Student`模型类,用来封装学生信息,Action可以直接操作这个模型对象...