我一直在Play上使用Action组合!直到现在的应用程序,他们工作正常.但是最近的2.2.0更新它们不再起作用,我不知道如何正确更新它们.
这个动作例如:
public class ChatMsgValidation extends Action<ChatMsgValidation.ValidChatMsg> { @With(ChatMsgValidation.class) @Target({ElementType.TYPE,ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) public @interface ValidChatMsg { } public Result call(Http.Context ctx) throws Throwable { Utils.debugFunctionCall("ValidChatMsg() " + ctx.toString()); // validate we got the "player" parameter JsonNode jsonRequest = request().body().asJson(); if (!WSUtils.validateJSONField(Constants.JSON_MSG,jsonRequest)) { return badRequest(WSUtils.simpleMissingFieldMsg(Constants.JSON_MSG)); } RequestParser requestParser = new RequestParser(request()); String chatMsg = requestParser.getMessage(); if (chatMsg.isEmpty()) { return badRequest(WSUtils.simpleFailureMsgWithReason(Messages.get("message.cannot.be.empty.error"),FailConstants.REASON_EMPTY)); } if (chatMsg.length() < Constants.MIN_CHAT_MESSAGE_LENGTH) { return badRequest(WSUtils.simpleFailureMsgWithReason(Messages.get("query.lower.limit.error"),FailConstants.REASON_TOO_SHORT)); } if (chatMsg.length() > Constants.MAX_CHAT_MESSAGE_LENGTH) { return badRequest(WSUtils.simpleFailureMsgWithReason(Messages.get("message.too.long.error"),FailConstants.REASON_TOO_LONG)); } return delegate.call(ctx); } }
问题是现在“call”方法应该返回“Promise”而不是“Result”,我无法找到一种方法来返回一个简单的JSON消息而不需要做很多代码,无用的代码,因为我正在创建虚函数只是为了拥有承诺.必须有一种我没有看到的更好的方法,请指教.
解决方法
我为我的问题找到了更好的解决方案.它如下:
return F.Promise.pure((SimpleResult) badRequest(WSUtils.simpleFailureMsgWithReason(Messages.get("message.cannot.be.empty.error"),FailConstants.REASON_EMPTY)));
原文地址:https://www.jb51.cc/java/120376.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。