Struts2(接上)----参数传递方法二

来源:互联网 发布:安装软件error 编辑:程序博客网 时间:2024/06/12 01:22

转自:http://blog.csdn.net/meaijojo/article/details/7535405

上篇说明了下Struts2参数传递的两种方法,其中第二种方法被称为:DomainModel,域模型。即新建一个类,用于存放属性。

下面说明另外一种方法,被称为:ModelDriven,模型驱动。

它与第二种方法非常类似,其他都是一样的,仅仅就是Action和访问有区别,它的Action如下:

[java] view plaincopy
  1. package com.bjsxt.struts2.user.action;  
  2.   
  3. import com.bjsxt.struts2.user.model.User;  
  4. import com.opensymphony.xwork2.ActionSupport;  
  5. import com.opensymphony.xwork2.ModelDriven;  
  6.   
  7. public class UserAction extends ActionSupport implements ModelDriven<User>{  
  8.       
  9.     private User user = new User();  
  10.       
  11.     public String add() {  
  12.         System.out.println("name=" + user.getName());  
  13.         System.out.println("age=" + user.getAge());  
  14.         return SUCCESS;  
  15.     }  
  16.   
  17.     @Override  
  18.     public User getModel() {  
  19.         return user;  
  20.     }  
  21.       
  22. }  

我们可以从中看到,它实现了ModelDriven接口,并采用了泛型技术。采用这种方式Struts2不会自动的实例化一个对象,因此只能我们手动生成。它覆写了ModelDriven接口的getModel()方法,它的作用就是返回一个类对象。

它的访问是和第二种有区别的(与第一种方法一样):

[html] view plaincopy
  1. 使用ModelDriven接收参数<a href="user/user!add?name=a&age=8">添加用户</a>  

它并没有采用user.name的方式,这也是为什么必须要new一个对象的原因。

这种方式的基本思想过程为:首先Action解析url,获得其中的参数,然后进入Action中,发现此Action实现了一个ModelDriven接口,此时就调用ModelDriven接口的getModel方法,获得类的对象,然后调用此类的set和get方法,将参数传入。

此种方式体现了Struts2的MVC思想,M----Model,V----View,C----Controller,但是这种方式很少使用,我们使用最多的还是上篇的第二种方式。


原创粉丝点击