GWT和JSR-168/286 portlet名称空间?

GWT和JSR-168/286 portlet名称空间?,gwt,portlet,Gwt,Portlet,我们正在为Liferay开发一组portlet。目前我们使用JSP,因此我们能够为DIV和元素ID使用标记,以便它们在页面上是唯一的,即使相同portlet的多个实例出现在页面上;例如: <div id='<portlet:namespace/>div'> <form> Enter your name here: <input type='text' id='<portlet:namespace/>name'/> <

我们正在为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中,您有什么想法吗?

GWT在元素类上包含一个setId()方法,您可以使用它


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

以下是我找到的最好的链接:

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

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