Vij*_*hmi 9 portlet liferay liferay-6
我需要使用portlet名称获取资源权限.
我将使用portlet的名称而不是Id.
portlet的资源许可权名称是该portlet的Id.我检查了Portlet表,它只有Id和其他信息.portlet的其他属性将保存在哪里?
有没有办法通过使用portlet的名称来获取portlet的Id.我有一个workaroud来获取所有portlet并进行比较,但如果我可以使用portlet的名称直接获取portlet的Id,那将会很有帮助.
它的紧急,如果有人知道请回复,这将是非常有帮助的.
提前致谢
Pra*_*h K 12
如果仔细查看如何根据Portlet名称生成Portlet Id,您将得到答案.
这是一个遵循的常量模式,因此如果您有名称,您可以像liferay一样构造Portlet ID.Liferay还借助portlet名称构造ID.
portlet-id的模式: <portletname in xml>_WAR_<servlet context name i.e. the war file without any special characters such as the hyphen>
例如:如果您的portlet名称已MyWork定义,portlet.xml并且文件webapps夹中生成的文件(如果您使用的是tomcat)MyWork-portlet则结果为Id MyWork_WAR_MyWorkportlet.
现在,如果你有Liferay的源代码,你可以看看PortletLocalServiceImpl的private _readPortletXML方法.
编辑:
如果您想在特定页面上找到portlet(给定friendly-url页面),那么您可能会发现此答案很有帮助.
小智 5
你可以试试这个:
System.out.println("ID : " + themeDisplay.getPortletDisplay().getId());
System.out.println("InstanceID: " + themeDisplay.getPortletDisplay().getInstanceId());
System.out.println("Portlet Name: " + themeDisplay.getPortletDisplay().getPortletName());
Run Code Online (Sandbox Code Playgroud)
不要忘记:
<% ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY);
themeDisplay.getUser().getScreenName(); %>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16751 次 |
| 最近记录: |