我正在使用Scala而不是Java来转换我的GWT项目的服务器端。我有许多RPC servlet进行数据库查找然后将结果映射到ArrayList,其中像SomeDTO这样的类可能是
override def listTrips(): util.ArrayList[TripRoleDTO] = {
val trd = new TripRoleDTO
trd.setRoleType(RoleType.TripAdmin)
trd.setTripName(sessionDataProvider.get().getSessionUser.getEmail)
val res: util.ArrayList[TripRoleDTO] = new util.ArrayList[TripRoleDTO]()
res.add(trd)
res
}
而不是
@Override
public ArrayList<TripRoleDTO> listTrips() {
final SessionData sessionData = sessionDataProvider.get();
final List<TripRole> tripsForUser = tripAdminProvider.get().listTripRolesForUser(sessionData.getSessionUser().getId());
return newArrayList(transform(tripsForUser, DTOConverter.convertTripRole));
}
请注意,Java实现实际上是在进行数据库调用(我在Scala中仍在研究),但它通过Google Guava的Iterables.transform方法进行DTO转换。
由于DTO对象需要是.java文件,GWT的客户端可以使用什么是将Scala域对象转换为DTOS的优雅方式?
答案 0 :(得分:1)
使用GWT RequestFactory自动创建DTO。可以使用接口和@ProxyFor注释简单地定义DTO,请参阅提供的链接中的示例。
如果由于某种原因使用RequestFactory不是替代方案,那么考虑使用Dozer将域对象映射到DTO,这经常与GWT一起使用。