我一直在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)));

PlayFramework 2.2 Java Action Composition的更多相关文章

  1. 不推荐使用Xamarin Android SetBackgroundDrawable但不支持SetBackground()

    解决方法使用Background属性.通常,只要Android具有不带参数的getX/setX方法,Xamarin就会将其转换为名为X的C#样式属性.

  2. php – Facebook Chat Bot – 如何测试欢迎信息?

    我的聊天机器人工作得很好,但是我在调试欢迎消息功能时遇到了问题,因为它只在会话启动时出现.如何重置聊天,以便将我视为与之交互的新用户?这是我目前欢迎的PHP脚本试试这个:>在桌面浏览器中打开Facebook,然后转到链接到messengerbot的页面>按“消息”>在消息弹出/讨论内选择“选项”>选择“删除对话…”并在确认提示中说“删除对话”>再次选择“消息”>选择“开始使用”第4步.真的删除你使用页面/应用程序的聊天记录,所以要小心.

  3. php – 如何执行ajax函数onbeforeunload?

    我正在开发一个PHP/javascript聊天.当用户登录时,他/她的用户名被插入到称为队列的MySQL表中.此插入返回将存储在名为$_SESSION[‘CHAT_QUEUE_ID’]的会话变量中的MysqL_insert_id()当用户关闭页面时,我需要删除MysqL表行.我试过以下,但没有成功:js文件chat.PHP有没有办法做到这一点?

  4. 在PHP中为聊天创建客户端

    当我在终端上执行它时,我有:我使用AJAX在聊天中发送用户输入,所以我希望能够接收该消息,并将其发送到服务器,我在终端上启动并回复并转发到网页并将其附加到文本框区域.我怎么能做到这一点?我应该通过main.PHP启动client.PHP作为服务吗?或者我应该使用客户端函数发送消息,然后返回它发送的内容,返回?

  5. php – 未捕获的异常:jQuery UI选项卡:不匹配的片段标识符

    JQueryUI选项卡插件期望内容div与ul链接位于同一容器中.在你的情况下,它希望内容div在ul下的divid=“chatChannel”中,但它们不在那里.

  6. GMail Chat如何在无客户端互动的情况下制作AJAX请求?

    所有HTTP响应都需要客户端启动它们,即使是使用AJAX的。但GMail的聊天功能能够接收来自其他用户的消息,即使我只是坐在我舒适的电脑椅子看,但不与浏览器进行交互。这种技术被称为“彗星”,也被称为“服务器推送”,“反向ajax”等。它是关于将数据从服务器推送到浏览器,保持http连接活着。查找更多信息在它上wikipediaarticle。

  7. angularjs – 如何访问Angular指令中的dom元素

    我试图附加一个keyup事件给一个指令一个我的Angular项目。我知道我可以用jQuery来获取它,但这不是Angular的方式。从dom获取元素的正确方法是什么?

  8. jquery – $.connection未定义signalR 0.5.3 MVC4

    一直在努力解决这个错误贴两个小时..这是我的Chat.cs最后,..可能_Layout.cs.html如果我访问/signalr/hubs,我可以看到源是正确生成的.那么我想念的是什么?但这是解决方案.你在head标签中以正确的顺序拥有所有脚本.但是VisualStudio模板中的_Layout.cshtml在body标记的末尾有以下行.这个bundle有jQuery库,它在加载时会覆盖$object.因此,SignalR在此设置上的任何“内容”现在都会被覆盖,无法访问.只需在页面中使用以下内容即可希望这

  9. jquery – 获取高度的div与overflow:auto;

    我有一个div高度:100px和overflow:auto内容是动态的。我想滚动底部的div我试过但如果内容大于100px$。height()返回100,而div不会在底部滚动我能怎么做?谢谢解决方法从底层的DOM元素获取scrollHeight属性:

  10. javascript – Angular Material $mdDialog在隐藏一次后不会显示

    我的应用程序有一个聊天按钮,可以打开$mddialog.当在对话框窗口中单击用户名时,我使用$mddialog.hide()关闭对话框窗口.这有效但当我再次点击聊天按钮时,它不再有效.谢谢你的帮助.Heresalinktomycodepen.HTMLJSCSS解决方法我检查了你的codepen,在尝试了一些事情后,我注意到你删除“scope:$scope”行时问题就解决了.当我查看docsfor$

随机推荐

  1. 基于EJB技术的商务预订系统的开发

    用EJB结构开发的应用程序是可伸缩的、事务型的、多用户安全的。总的来说,EJB是一个组件事务监控的标准服务器端的组件模型。基于EJB技术的系统结构模型EJB结构是一个服务端组件结构,是一个层次性结构,其结构模型如图1所示。图2:商务预订系统的构架EntityBean是为了现实世界的对象建造的模型,这些对象通常是数据库的一些持久记录。

  2. Java利用POI实现导入导出Excel表格

    这篇文章主要为大家详细介绍了Java利用POI实现导入导出Excel表格,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  3. Mybatis分页插件PageHelper手写实现示例

    这篇文章主要为大家介绍了Mybatis分页插件PageHelper手写实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  4. (jsp/html)网页上嵌入播放器(常用播放器代码整理)

    网页上嵌入播放器,只要在HTML上添加以上代码就OK了,下面整理了一些常用的播放器代码,总有一款适合你,感兴趣的朋友可以参考下哈,希望对你有所帮助

  5. Java 阻塞队列BlockingQueue详解

    本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景,通过实例代码介绍了Java 阻塞队列BlockingQueue的相关知识,需要的朋友可以参考下

  6. Java异常Exception详细讲解

    异常就是不正常,比如当我们身体出现了异常我们会根据身体情况选择喝开水、吃药、看病、等 异常处理方法。 java异常处理机制是我们java语言使用异常处理机制为程序提供了错误处理的能力,程序出现的错误,程序可以安全的退出,以保证程序正常的运行等

  7. Java Bean 作用域及它的几种类型介绍

    这篇文章主要介绍了Java Bean作用域及它的几种类型介绍,Spring框架作为一个管理Bean的IoC容器,那么Bean自然是Spring中的重要资源了,那Bean的作用域又是什么,接下来我们一起进入文章详细学习吧

  8. 面试突击之跨域问题的解决方案详解

    跨域问题本质是浏览器的一种保护机制,它的初衷是为了保证用户的安全,防止恶意网站窃取数据。那怎么解决这个问题呢?接下来我们一起来看

  9. Mybatis-Plus接口BaseMapper与Services使用详解

    这篇文章主要为大家介绍了Mybatis-Plus接口BaseMapper与Services使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  10. mybatis-plus雪花算法增强idworker的实现

    今天聊聊在mybatis-plus中引入分布式ID生成框架idworker,进一步增强实现生成分布式唯一ID,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

返回
顶部