我已实施 Liferay asynchronous MessageListener
做一个大约需要20分钟的任务,这就是我使用消息监听器的原因。
但我的要求是,在完成后端流程后我必须向用户显示成功消息,例如"您的数据已成功加载......"。我不想使用 Ajax Polling
请建议我:
我怎么能在liferay中做这些东西? liferay中是否有长时间的投票程序?
Ps:我正在使用 liferay 6.1.2-ce-ga3
作为参考,我使用了这个文档:https://www.liferay.com/documentation/liferay-portal/6.1/development/-/ai/lp-6-1-dgen09-using-message-bus-0
答案 0 :(得分:1)
如果您不想使用Ajax,我建议您实施一些"当前状态"。每当显示一个portlet时,它都可以显示操作当前是否仍在执行或是否已完成。你怎么知道这个?嗯,这是你的后端实现的一部分,而不是portlet级别,就像那个用户界面。
有了这个,您还可以扩展状态列表的UI,以便通过Ajax进行更新,一旦您准备好使用Ajax,这显然不会太难。
在前端,您不希望通过应用程序服务器打开长轮询HTTP请求 - 如果您正在寻找此内容。
还有Liferay的聊天portlet和通知portlet使用的机制,称为poller。但是,这也是Ajax,所以我不知道这是否符合您的要求。检查this forum post,注意,它已经很老了,上面提到的错误似乎已修复。我不知道开发者指南是否也有相关章节,但有了这个名字,我相信你可以找到更多信息