当前位置: 首页 > 知识库问答 >
问题:

Liferay:从portlet控制器设置portlet首选项

葛飞扬
2023-03-14

我想问你一个问题。我使用Liferay 6.2。我有一个自定义portlet,它嵌入在我的自定义主题中

$theme.runtime("mycustomportlet_WAR_mycustomportlet")

下面是Liferay portlet的一些设置。xml

    <preferences-unique-per-layout>false</preferences-unique-per-layout>
    <preferences-owned-by-group>true</preferences-owned-by-group>
    <instanceable>false</instanceable>

在portlet控制器呈现方法中,我设置了portlet首选项(我想使我的portlet无边界)

    PortletPreferences preferences = renderRequest.getPreferences();        
    preferences.setValue("portletSetupShowBorders","false");
    try {
        preferences.store();
    } catch (ValidatorException e) {
        e.printStackTrace();
    }

但当我检查Liferay和我的自定义嵌入portlet边框时,会发现。但PORTLETPREFERENCE表有一行,下面是首选项,ID根据liferay portlet。xml设置:

<portlet-preferences>
<preference>
<name>portletSetupShowBorders</name>
<value>false</value>
</preference>
</portlet-preferences>

有人能告诉我哪里出了错吗?好像Liferay不明白。我知道如何用另一种方式设置偏好。但我需要解决这个问题。

共有1个答案

吕自怡
2023-03-14

问题在于您的liferay portlet。xml

<preferences-owned-by-group>true</preferences-owned-by-group>

布局设置的首选项(包括portletSetupShowBorder)从布局中读取,只要它不是可安装的:

public PortletPreferences getStrictLayoutPortletSetup(Layout layout, String portletId) {

    long ownerId = PortletKeys.PREFS_OWNER_ID_DEFAULT;
    int ownerType = PortletKeys.PREFS_OWNER_TYPE_LAYOUT;

    if (PortletConstants.hasUserId(portletId)) {
        ownerId = PortletConstants.getUserId(portletId);
        ownerType = PortletKeys.PREFS_OWNER_TYPE_USER;
    }

    ...

所以,只要你的偏好是按组存储的,它们就不会被考虑进去。。。。

 类似资料:
  • 我正在尝试允许Liferay的管理员配置Portlet。我已经创建了配置页面和配置操作。 问题是:我可以保存配置并且portlet正确使用此配置,但是当我在配置中再次输入时,我无法获取此值。 somePreferenceKey_cfg是空的。 有人知道我能做什么吗?谢谢,伊万。

  • 我的页面上有大约4个Portlet和2个web内容。在4个portlet中,一个是定制portlet。我的需求就像我需要在最后加载我的定制portlet一样。我知道我们可以通过在liferay portlet中添加以下条目来设置。xml

  • 我使用Liferay portlet bundle 6.2(Tomcat)和Liferay IDE(eclipse)。我创建了两个Liferay插件项目。在第一个portlet(第一个插件portlet)中,我使用portlet首选项保存了一些数据。现在,我将在第一个portlet中显示第二个portlet。我怎么能做到?我找到了下面的代码和这个链接 从其他portlet打开portlet 但是,

  • 问题内容: 我在尝试在 Liferay 6.0 portlet中 设置会话cookie时遇到问题。我希望能够将cookie设置为客户端浏览器,以存储用于linkedin身份验证的应用程序密钥,然后可以在其中通过其他portlet检索它。 我可以使用以下方法读取Cookie: 这是我阅读失败的尝试。 问题答案: 我发现,无需大量修改Liferay门户本身,设置portlet cookie的唯一方法就

  • 有没有办法为我在控制面板中创建的组织创建portlet? 肯定是这样的 我创建了组织层次结构,并使每件事都成为用户角色...等等 这可以通过钩子或什么来完成,请帮帮我?! 这个我已经试过了

  • 问题内容: 这是我尝试在Liferay Portal 6.0.6中运行portlet时得到的堆栈跟踪。 任何人都知道发生了什么事吗? 问题答案: 问题已经解决了。如上所述,问题是100%的类路径问题。尽管我用jarscan扫描了所有目录,但我找不到任何冗余。事实证明,我的同事使用了许多不必要的JAR,将它们不必要地添加到了我的WAR中。 现在正在工作! 谢谢大家;-)