我们正在为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 / element ID中的任何想法?
答案 0 :(得分:2)
GWT在Element类上包含一个setId()方法,你可以使用它。
如果您正在使用小部件,则可以调用widget.getElement()。setId(...)
答案 1 :(得分: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。