jybzjf 发表于 2013-2-6 08:48:17

struts2利用OGNL取具有继承关系的类的方法

1、需求说明:

1、User和Administrator两个POJO对像,后者继承前者。

2、有一个SessionBean提供了一个getAllAdministrator()方法,用来取系统中所有的Administrator对象,而由于代码重用的问题,程员可能会要求此方法返回的是基类对像User而不是Administrator的Collection。

3、在一个Action类中调用上述SessionBean的getAllAdministrator()方法,得到一个Collection<User>的集合。而在Action中程序员也不做强制类型转换。

4、WEB程序员在JSP页面需要显示Administrator的特有属性。

2、WEB端的实现:

1、Action类如下:

public class ListAdminsAction      extends ActionSupport{    Collection<User> users = new ArrayList<User>();   public String execute()            throws Exception    {      users = this.getUserManager().getAllAdministrator();      return SUCCESS;    }   public Collection<User> getUsers()    {      return users;    }   public void setUsers(Collection<User> users)    {      this.users = users;    } }
2、JSP页面的调用:

<%@ taglib prefix="s" uri="/struts-tags" %><s:iterator value="users"><td><!-- name是Administrator继承自User的属性;-->      <s:property value="name"/>    </td><td ><!-- region是Administrator特有的属性;-->      <s:property value="region"/>    </td></s:iterator>
3、说明:上面的调用就可以直接取出Administrator的特有属性region,而不会出错。Struts2做了自动的父类到子类的类型转换。而不用程序员去做其它多余的转换工作。
页: [1]
查看完整版本: struts2利用OGNL取具有继承关系的类的方法