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

时间:2009-06-18 19:18:24

标签: 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'/>  
</form>  
</div>  

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

2 个答案:

答案 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。