当前位置: 代码迷 >> Web前端 >> GWT RPC有关问题之"GWT将某些类型视为可序列化"
  详细解决方案

GWT RPC有关问题之"GWT将某些类型视为可序列化"

热度:399   发布时间:2012-11-25 11:44:31.0
GWT RPC问题之"GWT将某些类型视为可序列化"

问题描述:因为RPC Service接口只支持java的一些基本类型和String,当我的项目中有一个类、ListMap、数组等等,需要传递到前台的时候,GWT想通过编译那么就必须要证明这些是可序列化的,换句话说就是这个Service这个接口就是让我们来往里加入一些不让GWT认为它是可序列化的,前提是实现了SerializableIsSerializable接口,这个接口里边必须要有相关方法,也就是说必须要有这个类、ListMap、数组等,在里面可以充当参数,也可以充当反回值,但是当我传递的时候用到了第二个类、第三个类…第一百个类,再加上几个数组或者其它的东西时,那么此此时这个接口就应该有N个方法来满足这个要求,这样非常的不便利如:

?

?




?
?

解决方案:

1、? 既然所有的类都需要实现Serializabled接口,那么我们就定义一个接口去extends Serializabled接口

2、? 将这个接口放入Service接口中,让GWT认为它是可以通过编译的。

3、? 将我们项目中的所有model类都实现这个自定义的接口,这就标识着所有的model类都可以通过GWT编译。

现在的Service接口:



?

解决完了以后又发现一个新的问题,ListList<String>List<List<String>>Map和一维二维数组怎么办呢。还需要再另写几个方法吗?答案是否定的

解决方案:

1、? 照葫芦画瓢,将所有的类型都放一个类里(建立一个RpcDTO类)

2、? 这个类实现Serializabled接口如图:



?
?

这样的话我们的Service接口里只需要两个标识,即可让GWT认为所有的都是可通过编译的。

现在的Service:




?
?

再让其变的完美一些,能不能只需要一个方法,这个方法即可以让我们用来标识可序列化,又可以当做服务层来处理我们的请求。

解决方案:

1、? 建立一个RpcDTO类让其实现Servializable接口

2、? 将所有项目中可能用到的类型都放入其中

3、? HashMap同样放入其中它的范型为String,Servializable如图:DTO



?

?

Service接口

?

?

?

?

表达的不怎么清晰,希望对未解决此类问题的人有所帮助.



?

?

  相关解决方案