【发布时间】:2015-03-16 01:49:37
【问题描述】:
我正在尝试将 PlayFramework 项目升级到当前版本,但在转换之前的返回签名之一时遇到了问题。
以前(Play 2.1 / Java 1.7)我们有一个控制器方法,它构建了一系列 Photo 对象作为 Promise,然后在最后将结果组合为异步响应:
// Combine all promises into a single promise
Promise<List<Photo>> promises = Promise.sequence(eachPromisedPhoto.toArray(new Promise[0]));
// Return
return async(
promises.map(
new Function<List<Photo>, Result>() {
public Result apply(List<Photo> photos) {
List<String> MD5s = new ArrayList<String>();
for (Photo photo : photos) {
if (photo != null && photo.isValid()) {
MD5s.add(photo.toString());
}
}
ObjectNode resultFinal = Json.newObject();
if (MD5s.size() > 0) {
resultFinal.put("MD5s", Json.toJson(MD5s));
resultFinal.put("status", "OK");
}
else {
resultFinal.put("status", "KO");
}
return ok(resultFinal);
}
}
)
);
据我所知,Play 2.3+ 中不再提供异步方法,目前还不清楚如何将此返回签名正确转换为新方法。我们也在更新到 Java 1.8,因此使用 lambda 表达式也可以。
【问题讨论】:
标签: java-8 akka java-7 playframework-2.1 playframework-2.3