`

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

相关推荐

    struts2_OGNL Demo

    通过分析这个项目,开发者可以了解如何在实际应用中组织Struts2的Action、配置文件、以及如何利用OGNL进行数据操作。同时,对于使用Eclipse或MyEclipse进行Java Web开发的初学者来说,也是一个很好的学习实例,有助...

    STRUTS2+ognl

    2. **创建第一个Action**: 创建一个Action类,继承自`ActionSupport`,并重写execute()方法。 3. **配置Struts2**: 在`struts.xml`中配置Action,包括Action的类、结果视图等。 4. **创建视图**: 使用JSP、...

    实验4 Struts2的类型转换与OGNL表达式语言.doc

    通过这种方式,可以轻松地利用OGNL表达式的强大功能来访问和操作模型中的复杂数据结构。 综上所述,Struts2框架中的类型转换和OGNL表达式语言都是极为重要的特性。正确理解和运用这些特性,可以帮助开发者构建更加...

    struts2 类包

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web应用程序框架,它在Web开发领域具有广泛...通过深入理解这些组件的作用和相互关系,开发者可以更好地利用Struts2来提升开发效率,降低项目的复杂性。

    Struts2视频教程

    - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它继承了Struts1的优点,同时在设计上更加灵活、易用,支持拦截器、类型转换、文件上传等特性。Struts2使用过滤...

    struts2-Annotation

    - 然后,在需要注解的类或方法上应用相应的Struts2注解。 - 配置Struts2的`struts-default.xml`或`struts-plugin.xml`,启用注解配置支持。 - 最后,运行应用程序,Struts2会自动扫描注解并根据它们进行处理。 4...

    Struts1和Struts2的区别和对比

    Struts2则利用OGNL进行转换,内置了对基本类型和常见对象的转换。 最后,在数据校验方面,Struts1支持在ActionForm的validate方法中进行手动校验,或使用Commons Validator扩展。Struts2提供了更多样化的校验方式,...

    使用Struts 2框架开发租房网站

    在北大青鸟Y2学年的课程中,学生们通常会学习如何利用Struts 2框架来构建一个租房网站,这涉及到多个关键知识点。 1. **MVC模式**:Struts 2是基于MVC设计模式的,它将应用程序分为模型、视图和控制器三个部分,以...

    struts2讲义 struts2讲义struts2讲义struts2讲义struts2讲义

    ### Struts2讲义知识点概览 #### 一、Struts2的历史与发展 - **Struts框架的发展历程**: - Struts最初版本发布于2000年...通过对Struts2核心概念和技术的理解,开发者可以更好地利用这个框架来满足不同项目的需求。

    Struts2框架 jar JAVA开发 Struts2.jar架包 Struts2开发实例

    Action类需要继承Struts2提供的ActionSupport类或者实现Action接口,通过方法映射处理HTTP请求。Action类中的方法返回值决定了控制流程的走向,返回值可以是字符串,对应不同的结果视图。 **拦截器** 拦截器是...

    struts2 学习重点笔记

    - **文件上传**:利用 Struts2 的 FileUploadInterceptor 实现文件上传功能。 - **文件下载**:可以通过 Action 的响应流来实现文件下载。 #### 五、Struts2 实践技巧与优化 **5.1 性能优化** - **减少 Action ...

    struts2教学用ppt

    6. **OGNL(Object-Graph Navigation Language)**:Struts2使用OGNL作为表达式语言,用于在Action和视图之间传递数据。它能方便地访问对象属性,甚至可以进行动态方法调用。 7. **插件机制**:Struts2有一个强大的...

    struts 2 基础2__继承ActionSupport完成输入校验

    在基础的Struts2应用中,我们常常会继承`ActionSupport`类来实现输入校验,从而提高代码的复用性和可维护性。 `ActionSupport`是Struts2提供的一种基础Action实现,它包含了默认的行为,如错误处理、国际化支持和...

    struts2速成

    Struts1要求Action类继承抽象基类,而Struts2则允许Action类实现Action接口,或者直接使用具有`execute`方法的POJO对象。Struts2的Action对象是为每个请求创建的,解决了线程安全问题,而Struts1的Action是单例模式...

    struts2数据封装源码

    综上所述,"struts2数据封装源码"的学习将涵盖Action类的设计、数据绑定、验证机制、结果配置、拦截器的使用,以及如何利用OGNL和值栈在视图层展示数据等多个方面。通过深入理解这些概念并结合实际的代码示例,可以...

    struts2_jar

    1. **Action类**:Struts2中的Action类是业务逻辑处理的主要载体,继承自`com.opensymphony.xwork2.ActionSupport`或其子类。开发者可以在Action类中定义处理用户请求的方法,并返回一个表示结果的字符串,该字符串...

    Struts与Struts2比较学习

    Struts2则允许开发者直接定义一个带有execute方法的Pojo,无需继承特定的类,降低了框架的侵入性。 3. **配置文件差异** - **Struts1** 使用struts-config.xml文件配置Action、FormBean和ActionMapping等信息,这...

    Struts2项目实例

    通过分析这个实例,学习者可以了解如何将Struts2的这些特性应用到实际项目中,包括如何配置Action、如何编写拦截器、如何利用OGNL传递数据、如何进行表单验证,以及如何组织和管理MVC结构。此外,实例可能还包含了...

    struts2_HelloWorld代码

    在这个例子中,你可能会看到一个名为`HelloWorldAction`的Java类,该类继承自Struts2提供的`ActionSupport`类。`ActionSupport`类提供了基本的错误处理和国际化支持。你需要在`execute()`方法中编写业务逻辑,这个...

    struts 2 源码 导入eclipse工程

    将Struts 2源码导入Eclipse工程,对于学习和理解框架的工作原理以及进行自定义开发具有重要意义。 首先,导入Struts 2源码到Eclipse需要遵循以下步骤: 1. 下载Struts 2的源码包,通常可以从Apache官方网站获取...

Global site tag (gtag.js) - Google Analytics