如何在liferay中获取客户端portlet-id?

时间:2012-12-10 11:31:16

标签: liferay liferay-6 alloy-ui

我在liferay portlet中使用AlloyUI。

我想在javascript中使用我的<input>个ID。问题是在客户端更改了元素的id。

例如:
如果我将<input>的ID设置为“用户名”,则会更改为_hospital_WAR_hospitalportlet_userName,即_hospital_WAR_hospitalportlet_会附加到ID,其中Hospital是我的portlet名称。

如何获取客户端ID,以便我可以在jquery中使用它?

2 个答案:

答案 0 :(得分:8)

_hospital_WAR_hospitalportlet_的{​​{1}}前面的字符串Id只是portlet命名空间。

这仅适用于<input>的{​​{1}}&amp;如果您使用<input>代码和name&amp;如果您只使用普通的html id标记,则不会更改<aui:input>个属性。

但是,使用name是一个好习惯,您可以执行以下操作来获取javascript代码中的portlet命名空间:

  1. 如果您在JSP中使用javascripts,即在id<input>内使用,那么您可以使用 <aui:input> {{ 1}} 在javascript中获取字符串<script> .. </script>,类似于。

    <aui:script> .. </aui:script>
  2. 但如果您使用的是<portlet:namespace />文件,我建议您将命名空间作为参数传递给<%= renderResponse.getNamespace() %>文件中的javascript函数:

    _hospital_WAR_hospitalportlet_

    从JSP调用此函数:

    jQuery("#<portlet:namespace />username").val();
    
    // Or
    
    jQuery("#<%= renderResponse.getNamespace() %>username").val();
    
  3. 希望这会有所帮助。我不知道是否有办法直接通过Liferay定义的一些javascript函数获取*.jsjs。如果你得到类似的东西,你可以在这里发布,这将非常有帮助。

答案 1 :(得分:4)

试试这个:

Liferay.Portlet.ready(

    /*
    This function gets loaded after each and every portlet on the page.

    portletId: the current portlet's id
    node: the Alloy Node object of the current portlet
    */

    function(portletId, node) {
    }
);