【问题标题】:Liferay: How to obtain PortletPreferences object on portlet´s init()?Liferay:如何在 portlet 的 init() 上获取 PortletPreferences 对象?
【发布时间】:2012-08-15 12:31:52
【问题描述】:

我有一个配置为首选项公司范围的 portlet,因此每个人都可以共享相同的首选项

现在我想为这些首选项设置一个默认值,因此该代码应该只在整个生命周期的第一次执行时才需要。这就是为什么我认为 init() 方法是设置此默认值的最佳选择,以防它们之前尚未设置。

如何从那里检索 PortletPreferences 对象?

编辑我正在寻找可从 GenericPortlet 检索的 portletContext 和 portletConfig,但到目前为止还没有运气

【问题讨论】:

    标签: liferay preferences portlet init


    【解决方案1】:

    如果你真的从来没有改变过这些值,那么初始化它们一次并保留它们直到你重新启动你的服务器是很好的,我会在你的portlet中硬编码它们。

    如果配置可能会更改(如果只是最初,在向页面添加 portlet 之后),请在需要时阅读它们。并在 portlet.xml 中提供默认值:

    <portlet>
        <portlet-name>my-portlet</portlet-name>
        <portlet-class>
            com.example.MyPortlet
        </portlet-class>
        <portlet-preferences>
            <preference>
                <name>my-first-pref</name>
                <value>some default value</value>
            </preference>
        </portlet-preferences>
    </portlet>
    

    记住:如果您曾经更改了 portlet 首选项,则必须重新启动服务器才能激活它们。

    如果您碰巧担心获取首选项的性能:衡量是否有影响,发布数字。我敢打赌,您可以在其他地方获得很多更多性能。如果您绝对无法在其他地方获得性能:恭喜,您拥有一个经过良好调整的系统。

    【讨论】:

    • 我的问题是,将首选项写为 init-params 并不好,因为我需要一种编程方式,每次部署都使用来自 Web 上下文的信息实时进行(所以 init 是完美的)
    • 我确定这是一个错字,Olaf,不应该是进入 标记的首选项,例如: Name
    • @Sharanbm 谢谢 - 愚蠢的复制/粘贴/编辑错误,留下了错误的部分。已更正。
    • @user1352530 如果您通过实际配置以外的其他方式获取值(您将使用 PortletPreferences),为什么还要使用 PortletPreferences?只需导出您需要的值,将它们存储在某个地方(在这种情况下,即使成员变量也可能很好)。另外,请注意以前的 cmets:我已经编辑了 xml。
    猜你喜欢
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多