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

Beg*_*ner 6 liferay liferay-6 alloy-ui

我在liferay portlet中使用了AlloyUI.

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

例如:
如果我将<input>'Id' 设置为"username",则将其更改为_hospital_WAR_hospitalportlet_userNameie _hospital_WAR_hospitalportlet_附加到Id,其中Hospital是我的portlet名称.

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

Pra*_*h K 8

字符串_hospital_WAR_hospitalportlet_前置到Id<input>不过是portlet的命名空间.

如果您使用标记,则仅在您的<input>'s name&id属性前面添加,如果您只使用普通的html 标记,则不会更改&属性.<aui:input>nameid<input>

但是因为这是一个很好的做法,<aui:input>你可以执行以下操作来获取javascript代码中的portlet命名空间:

  1. 如果您正在使用使用中的JSP,即内部的JavaScript <script> .. </script><aui:script> .. </aui:script>那么你可以使用<portlet:namespace /><%= renderResponse.getNamespace() %>得到的字符串_hospital_WAR_hospitalportlet_你的JavaScript,像里面.

    jQuery("#<portlet:namespace />username").val();
    
    // Or
    
    jQuery("#<%= renderResponse.getNamespace() %>username").val();
    
    Run Code Online (Sandbox Code Playgroud)
  2. 但是如果您使用的是*.js文件,那么我建议您将命名空间作为参数传递给文件中的javascript函数js:

    function changeValues(portletNamespace) { // this function is in a js file
        jQuery("#" + portletNamespace + "username").val("Lets change");
    }
    
    Run Code Online (Sandbox Code Playgroud)

    从JSP调用此函数:

    <input type="button" onClick="changeValues('<portlet:namespace />')" />
    
    Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.我不知道是否有办法获得namespaceportletId直接通过Liferay定义的一些javascript函数.如果你得到类似的东西,你可以在这里发布,这将是非常有帮助的.