问题描述:因为RPC Service接口只支持java的一些基本类型和String,当我的项目中有一个类、List、Map、数组等等,需要传递到前台的时候,GWT想通过编译那么就必须要证明这些是可序列化的,换句话说就是这个Service这个接口就是让我们来往里加入一些不让GWT认为它是可序列化的,前提是实现了Serializable或IsSerializable接口,这个接口里边必须要有相关方法,也就是说必须要有这个类、List、Map、数组等,在里面可以充当参数,也可以充当反回值,但是当我传递的时候用到了第二个类、第三个类…第一百个类,再加上几个数组或者其它的东西时,那么此此时这个接口就应该有N个方法来满足这个要求,这样非常的不便利如:
解决方案:
1、 既然所有的类都需要实现Serializabled接口,那么我们就定义一个接口去extends Serializabled接口
2、 将这个接口放入Service接口中,让GWT认为它是可以通过编译的。
3、 将我们项目中的所有model类都实现这个自定义的接口,这就标识着所有的model类都可以通过GWT编译。
现在的Service接口:
解决完了以后又发现一个新的问题,List、List<String>、List<List<String>>、Map和一维二维数组怎么办呢。还需要再另写几个方法吗?答案是否定的
解决方案:
1、 照葫芦画瓢,将所有的类型都放一个类里(建立一个RpcDTO类)
2、 这个类实现Serializabled接口如图:
这样的话我们的Service接口里只需要两个标识,即可让GWT认为所有的都是可通过编译的。
现在的Service:
再让其变的完美一些,能不能只需要一个方法,这个方法即可以让我们用来标识可序列化,又可以当做服务层来处理我们的请求。
解决方案:
1、 建立一个RpcDTO类让其实现Servializable接口
2、 将所有项目中可能用到的类型都放入其中
3、 将HashMap同样放入其中它的范型为String,Servializable如图:DTO类
Service接口
表达的不怎么清晰,希望对未解决此类问题的人有所帮助.