如何在 liferay (java) 中获取当前组 ID (或社区 ID)?

6

我正在使用Vaadin在Liferay 6中开发门户,并且需要获取门户所在社区的ID。应该如何实现?

2个回答

11

Liferay中没有Community实体,它只是另一种类型的组(请参见GroupConstants)。

如果您可以访问ThemeDisplay对象,我认为这将为您提供社区的ID。

long id = themeDisplay.getLayout().getGroupId();

在 struts action 中,您可以通过以下方式获取 ThemeDisplay:

ThemeDisplay themeDisplay = 
     (ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);

其中request可以是RenderRequestActionRequest


谢谢,但themeDisplay不起作用,我已经尝试过了。Eclipse显示“无法解析themeDisplay”。我可以通过创建变量themeDisplay来修复它,但必须首先初始化它,而且我只能将其初始化为null。如果初始化为null,自然它是不起作用的。谢谢 - Pat - Pat Guy
我已经更新了答案,展示如何访问ThemeDisplay对象。 - blank
嗨,终于让它工作了。我不得不实现PortletRequestListener并在onRequestStart函数中初始化那个themeDisplay!非常感谢你伙计! - Pat Guy
我认为你可能做得太多了,themeDisplay是一个非常核心的Liferay类,通常无需太多工作即可在任何地方使用。你从哪里访问它? - blank
谢谢Bedwyr,themeDisplay.getLayout().getGroupId()正是我需要的。 - Vaibu

0

对于那些在 Liferay portlets 中使用 Spring MVC 的用户,将以下内容添加到 ControllerClass 中

     @ModelAttribute("tD")
    public String getThemeDisplay(RenderRequest req) {
        ThemeDisplay themeDisplay = (ThemeDisplay) req.getAttribute(WebKeys.THEME_DISPLAY);
        return themeDisplay.getPathThemeImages();
    }

在 JSP 中引用图像,只需添加以下内容即可:


<img src="${tD}/[image-path] />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接