Alfresco Share是否提供任何互动Dashlet通信的机制?

7
我正在尝试找出如何在Alfresco Share中执行一些内部dashlet通信的方法。
这里有一个简单的用例:
我们有2个dashlet,让我们称它们为A和B。我想能够在A中填写一个“名称”字段(假设值为“Toto”),然后单击提交按钮。在单击A中的提交按钮之后,B应该更新为问候语,例如“早上好Toto”。
谢谢你的答案。
谢谢您的答案。您能详细说明一下“让dashlet_b.get.html.ftl向dashlet_a.post.html.ftl发送信息”吗?
在dashlet_b.get.html.ftl中,您可能会有类似以下内容的东西:
<form id="..." action="" method="POST">
     <input  id="name" type="text" name="name" value=""/>
     <input type="submit" id="send" value="Send" /></form>

当您提交表单时,它会查找dashlet_b.post.js,对吗?那么您如何告诉它将表单发送到dashlet_a.post.js?

你还在寻找另一个答案吗?针对你更新后的目标网页脚本,可以使用<form action="/url/to/dashlet_a">,但这只会将数据提交到服务器,而不会在浏览器中更新你的dashlet A。 - Florian
2个回答

7
要创建这些动态的Dashlet,仅使用服务器端Dashlet webscript是不够的。您需要在浏览器中使用JavaScript逻辑来通知其他Dashlet进行更改。这通常是Alfresco的做法:
浏览器JavaScript Dashlet A:
YAHOO.Bubbling.fire("interDashletMessage",
{
    message: "Hello World."
});

浏览器Javascript小部件 B:
YAHOO.Bubbling.on("interDashletMessage", function(layer, args) {
    var message = args[1].message;
    alert(message); // or write it to the dashlets HTML content
});

这将使用名为“interDashletMessage”的自定义事件,将信息从dashlet A发送到dashlet B。
如果您的dashlet B仅显示少量消息,则使用事件发送数据可能足够。如果它更加复杂,您的dashlet A需要首先将其数据发布到存储库,然后触发“刷新”事件,并使dashlet B从存储库刷新其内容。这将涉及多个webscripts,您可能需要编写。

0

这很简单,我想。

每个Dashlet实际上都是一个WebScript。因此,您可以为不同的用途拥有多个WebScript。就像我有dashlet_a.get.html.ftl和dashlet_a.post.html.ftl。实际上,这两个是相同的WebScript,只是一个在post上执行,另一个在get上执行。

因此,您可以让dashlet_b.get.html.ftl将某些内容发布到dashlet_a.post.html.ftl。因此,您正在从b向a提交值。

下一步是刷新dashlet_a,一种方法是进行完整的页面刷新,但这并不好。更好的方法是以下内容: 在dashlet_a.post.html.ftl中,您只需通过YUI / JQuery设置在dashlet_a.get.html.ftl中定义的字段的值即可。

看看默认可配置的Dashlet如何处理,例如Webview。如果在配置中放置了某些内容,则直接显示该值。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接