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做了自动的父类到子类的类型转换。而不用程序员去做其它多余的转换工作。

你可能感兴趣的:(工作,jsp,Web,struts)