`

当DWR遇到泛型——如何避免泛型造成的参数解析错误

阅读更多

  在通过ajax进行远程调用方面,存在两种不同的方式,一种是json rpc,一种是dwr方式的私有转换。从优雅性上而言,json-rpc其实要好一些的,不过dwr仍然得到了广泛的应用。

   这些框架提供的最大的好处是提供了js的对象到java对象的双向的透明转换,为我们的数据传递和获取提供了非常大的方便。但是在实际项目的使用中,遇到了因为泛型而导致的dwr调用的问题,下面进行详细的说明,以及给出了在自己的项目中如何规避该问题。

 

   1.dwr对于泛型的支持:

     对于自定义的数据对象,dwr要求提供一个对应的convert配置,并要求该类符合java规范的要求。同时,通过配置signature,dwr可以使用java的泛型容器类。

 

 

  2.自定义对象中的泛型问题:

 

      但是,对于自定义的类中涉及到的泛型问题,会导致dwr无法正确解析并导致转换失败。

 

     在自己的项目中,为了方便,定义了一个用于所有映射类的泛型父类,其中提供了get/set方法,但是在调用时,传入对象无法被正确转换,经过跟踪,确认是因为泛型而导致无法获取到真正的类型。

 

   解决办法:在父类中去掉get/set方法,而在子类中提供具体类型的get/set方法

 

 

 

分享到:
评论

相关推荐

    DWR.xml配置文件说明书(含源码)

    spring Location* 任何以location开头的参数,每个参数都是指定一个spring的配置文件,在参数没有设置的情况下DWR会去读取spring的全局的配置文件. spring beanName 从配置文件中读取的bean的名称 “scope参数允许你...

    DWR两个依赖包

    Direct Web Remoting (DWR) 是一个开源的Java库,它允许在JavaScript和服务器端Java之间进行实时的、安全的通信。DWR使得Web应用程序能够像桌面应用一样更新页面,无需刷新整个页面或使用复杂的Ajax技术。在这个描述...

    DWR2.0.5源码

    Java 5引入了许多新的特性,如泛型、枚举、注解等,DWR可能利用了这些特性来提升其功能和性能。通过分析这部分代码,开发者可以了解到如何在Java 5环境中有效地使用DWR。 DWR的工作流程大致如下: - **配置**:在...

    DWR开发包常规客户端服务器端面向对象编程

    dwr开发包,常规客户端服务器端面向对象编程。 基于Spring,在服务器端配置: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" ...

    JAVA项目描述 (2).docx

    4. **操作系统和开发环境**: Windows XP professional是开发环境中常见的操作系统,JDK 1.5是Java 5的别名,引入了泛型、枚举、可变参数等特性。Eclipse 3.2.GA是一个广泛使用的Java IDE,支持代码自动完成、调试、...

    api大全(java)

    这个文档详细解释了Java语言的关键特性,如泛型、枚举、可变参数、自动装箱与拆箱等,同时涵盖了基础类库的API,如集合、I/O流、多线程、网络编程等。通过学习此文档,开发者可以更好地理解和使用Java标准版(Java ...

    java学习笔记

    public boolean addAction(final LoginData_DWR loginData_DWR, final UserData_DWR userData_DWR) { TransactionTemplate transactionTemplate = new TransactionTemplate(this.transactionManager); Object ...

    JAVA项目描述.docx

    JDK 1.5是Java语言的重要版本,引入了泛型等新特性。Eclipse是一个广泛使用的开源IDE,为Java开发提供了丰富的工具支持。Tomcat是流行的轻量级应用服务器,适合小型到中型的Web应用。SQLServer 2000是微软的数据库...

    简历.doc

    掌握JS、DOM/DHTML编程,能使用DWR和jQuery等AJAX框架。熟练运用Struts2框架,能与其他轻量级框架SSH(MyBatis、Hibernate、Spring)配合开发。理解Spring的IOC和AOP设计思想,能够进行Web系统的声明式事务管理和...

    java程序员面试简历(列子).doc.doc

    15. **dom4j**:一个Java的XML处理库,用于解析、操作和生成XML文档。 16. **Linux操作系统**:熟悉Linux环境,可能意味着具备一定的命令行操作和服务器管理能力。 **项目经验:** - **人力资源管理系统(HR)** -...

    java 课程体系,各门课程的学习步骤

    以下是对各个课程内容的详细解析: 1. **Unix/Linux 开发环境培训**:这一课程主要介绍Unix/Linux操作系统的基本原理和常用命令,目的是让学员熟悉并掌握在Unix/Linux环境下进行软件开发的日常操作和管理。 2. **...

    XXX个人简历.doc

    2. **高级Java知识**:掌握了泛型、反射、动态代理和类加载,这些都是Java的高级特性,用于实现动态类型、元编程和框架设计。 3. **Web开发技术**:熟练使用JSP、Servlet和JSTL,这些都是Java服务器端开发的重要...

    java学习路线

    - 学习ArrayList、LinkedList、HashSet、HashMap等常用集合类的使用,以及泛型的概念。 - 掌握接口如List、Set、Map,以及迭代器(Iterator)和枚举(Enumeration)的使用。 **3. 界面编程(了解)** - **AWT**...

Global site tag (gtag.js) - Google Analytics