以下是我的域类
class Person {
String getName();
Vehicle getVehicle();
}
interface Vehicle {
String getCompanyName();
String getRegNo();
Point getParkingSpaceRequired();
}
abstract class AbstractVehicle {
}
class Motorcycle extends AbstractVehicle {
}
class Car extends AbstractVehicle {
}
创建PersonProxy作为EntityProxy是直截了当的,并且对person.getName()
工作正常我已经将VehicleProxy创建为ValueProxy并使用.with('vehicle')调用fire() 但是我收到了错误:
域类型com .... AbstractVehicle $$ EnhancerByCGLIB $$ e86549b9无法发送到客户端。
在PersonProxy上
我得到了@ProxyFor(value = Person.class,locator = PersonLocator.class)
在VehicleProxy上我得到了@ProxyFor(value = Vehicle.class)
那么,如何在RequestFactory中处理这种继承?
我应该从ValueProxy将Vehicle更改为EntityProxy吗?
那么如何实现VehicleLocator的方法呢?
答案 0 :(得分:0)
您应该为Motorocycle
和Car
编写代理接口,而不是为接口Vehicle
编写代理接口。我从来没有使用requestfactory代理接口接口(而不是类),在我看来,这就是你得到这个例外的原因。
[编辑]
在上述情况下,您必须将Vehicle
接口移动到shared
包,以便服务器和客户端站点都能看到它。对于枚举而言,这是非常常见的解决方案 - 域类具有一些枚举属性,而代理接口也必须包含此属性的访问者。
其他解决方案(我认为可能不起作用)是为Vehicle
接口编写代理接口,Motorocycle
和Car
的代理接口应该扩展它。