`
jaesonchen
  • 浏览: 313359 次
  • 来自: ...
社区版块
存档分类
最新评论

struts使用ModelDriven获得页面数据

 
阅读更多
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的使用示例

    综上所述,这个示例项目展示了如何在Struts2框架下使用ModelDriven模式处理用户请求,通过`Student`对象绑定表单数据,以及如何与数据库进行交互。对于初学者来说,这是一个很好的实践案例,涵盖了Struts2的基本操作...

    Struts2_ModelDriven接收参数(项目案例及视频)

    在Struts2中,ModelDriven接口是一个非常实用的功能,它可以帮助我们更方便地处理Action类中的模型数据。这个项目案例和视频教程主要针对初学者,旨在深入理解如何使用Struts2的ModelDriven机制来接收和传递参数。 ...

    ModelDriven

    综上所述,ModelDriven接口简化了模型数据的绑定,而拦截器提供了灵活的扩展机制,两者结合使用能极大地提高Struts2应用的开发效率和可维护性。文件"06-01_001"可能包含了更详细的示例代码或教程,可以帮助深入理解...

    struts1.3页面跳转问题

    在Struts1.3中,页面跳转是常见的需求,它涉及到Action类、配置文件(struts-config.xml)以及JSP页面间的交互。本篇文章将深入探讨Struts1.3中的页面跳转机制及其相关知识点。 首先,页面跳转在Struts1.3中有两种...

    Struts2五种数据封装Demo

    4. **使用ModelDriven接口**:实现`ModelDriven`接口,创建一个Model对象,Struts2会自动将请求参数映射到Model对象。 5. **使用SAXResult**:在Action中定义一个类型为`List`或`Map`的属性,Struts2会将所有请求...

    struts2.0实现的数据分页实现及实现分页步骤

    - 为了在Action和JSP之间传递分页信息,可以使用Struts2的拦截器(Interceptor)或者模型驱动(ModelDriven)特性,将分页对象绑定到Action上下文,然后在JSP中可以直接访问这些信息。 8. **实现分页导航**: - ...

    用struts2加hibernate对学员信息进行增删改查操作

    8. **页面跳转与数据传递**:在Struts2中,Action类的方法返回的结果名对应一个视图,如jsp页面,同时可以通过ActionContext或ModelDriven接口将数据传递到视图。页面之间的跳转和数据传递是Struts2的一大特点,简化...

    struts1和struts2的区别

    - **Struts1**: 使用标准的JSP页面作为视图层,页面上的数据显示主要依赖于JSP标签。 - **Struts2**: 引入了ValueStack的概念,这使得开发者可以在视图层直接访问Action中的数据。Struts2还支持多种视图技术,如...

    strusts2包struts2-rest-showcase-2.1.8.war实现ModelDriven接口项目心得

    在本文中,我们将深入探讨如何使用Struts2的`ModelDriven`接口以及如何控制URL,以实现`struts2-rest-showcase-2.1.8.war`项目中的功能。 首先,`ModelDriven`接口是Struts2提供的一种设计模式,用于将Action类与...

    Struts2 登陆小案例

    2. **配置文件**:Struts2使用XML配置文件(struts.xml或struts-default.xml)来定义Action类、结果页面以及它们之间的映射。例如,我们可能需要配置一个`&lt;action&gt;`元素,指定登录Action的类和执行方法。 3. **拦截...

    Struts2视频教程

    Struts2内置了对OGNL的支持,可以方便地在JSP页面中使用OGNL表达式获取模型数据。 - **标签库**:Struts2提供了丰富的标签库,可以帮助开发者快速构建表单和页面元素,提高开发效率。 - **拦截器**:拦截器是Struts2...

    Struts2和Struts1的区别,详细点,主要说说Struts2

    - **Struts2**则使用了ValueStack来存储Action对象和视图数据,这种机制允许在不同的页面之间传递数据,从而实现了更加灵活的页面导航。 #### 数据类型转换 - **Struts1**使用ActionForm中的方法来转换表单提交的...

    使用struts2写的小项目

    4. **模型驱动(ModelDriven)**:一种设计模式,允许Action类通过持有模型对象来访问和操作数据。 5. **值栈(Value Stack)**:Struts2中的一个重要概念,它存储了Action和结果视图之间的数据。Action中的属性会...

    struts1.2实现分页

    5. **JSP渲染**:在JSP页面上,我们可以使用Struts的标签库或EL表达式来遍历和显示数据。同时,也需要创建分页导航链接,让用户可以跳转到其他页。 三、具体实现细节 1. **创建Action**:创建一个名为`...

    struts2 model-driven

    Struts2 ModelDriven模式是Java Web开发中一种常见的MVC框架设计模式,它在Struts2框架中扮演着重要的角色。这个模式的主要目的是简化Action类的编写,提高代码的可维护性和可读性。在Struts2中,ModelDriven模式...

    Struts2和Struts1的什么区别

    - Struts2允许直接使用POJO作为模型数据,无需特定的`ActionForm`。 - 提供了`ModelDriven`接口,允许为每个Action配置不同的模型对象,增加了模型数据的灵活性和可扩展性。 ### 3. **表达式语言** #### Struts1:...

    struts-2.3.16.1-all

    5. **ModelDriven模式**:Struts 2支持ModelDriven模式,可以将模型对象自动绑定到Action,简化了数据绑定过程。 6. **Tiles插件**:Tiles提供了一种方式来组织和重用页面布局,使得页面设计更加模块化和可复用。 ...

    基于struts2的登录源码,采用IDEA编写

    3. **ActionForm/ModelDriven**:在Struts2中,ActionForm类用于封装表单数据,但现在更推荐使用ModelDriven接口,它可以直接绑定到业务对象,简化了代码。 4. **拦截器(Interceptor)**:Struts2的拦截器机制允许...

    struts1与struts2本质区别

    - **Struts1**:使用标准JSP机制将对象绑定到视图页面。 - **Struts2**:使用“ValueStack”技术,标签库可以直接访问堆栈中的值,无需显式地将对象绑定到视图页面。 #### 八、类型转换的对比 - **Struts1**:使用...

    struts2框架做的学生信息查询系统

    5. **模型驱动(ModelDriven)**:Struts2提供了ModelDriven接口,允许Action类通过关联一个模型对象来简化数据处理。在这个系统中,可能有一个`Student`模型类,用来封装学生信息,Action可以直接操作这个模型对象...

Global site tag (gtag.js) - Google Analytics