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]