2

我们正在为 Liferay 开发一组 portlet。目前我们使用 JSP,因此我们可以使用标签作为 DIV 和元素 ID,以便它们在页面上是唯一的,即使页面上出现同一个 portlet 的多个实例;例如:

<div id='<portlet:namespace/>div'>  
<form>
    Enter your name here: <input type='text' id='<portlet:namespace/>name'/>  
</form>  
</div>  

现在我们想尝试使用 GWT 而不是 JSP 构建 portlet。我发现的任何 GWT portlet 示例(其中只有几个)都不能解决“如何为 div 和元素分配唯一 ID”问题,因为 GWT 似乎在 ID 之前已预编译为 Javascript曾经产生过。关于如何将 portlet 的名称空间合并到 div/元素 ID 中的任何想法?

4

2 回答 2

2

GWT 包含您可以使用的 Element 类的 setId() 方法。

如果您使用小部件,您可以调用 widget.getElement().setId(...)

于 2009-09-04T03:45:51.197 回答
2

这是我找到的最佳链接:http: //xantorohara.blogspot.com/2007/07/portlets-and-gwt.html

我通过在根容器级别为每个基于 GWT 的 portlet 使用唯一 id 解决了这个问题。除此之外,我实现了 Command 模式并拥有一个基于 GWT 历史支持的 Command 分派器,该分派器将适当的操作分派到 portlet 而不会干扰其他 portlet。

由于 liferay 支持 jsr 286,您可以安排一个 GWT ajax 调用,该调用将返回 portlet id 并使用该 id 来区分不同的 portlet。

于 2009-09-25T19:11:18.387 回答