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

从Velocity模板访问Liferay自定义字段

公孙高畅
2023-03-14

我试图从一个Liferay模板中发出自定义字段的值。

使用管理员界面,我定义了一个名为“org home page”的新组织级自定义字段,默认值为“tom rules”。

我想在portal_normal中发出这个值。虚拟机

我根据一位同事发送的一些帖子和样本,以及我自己的大量实验,拼凑出了这段代码:

$page.getGroup().getExpandoBridge().getAttribute("org-home-page")

不幸的是,Velocity无法解析表达式,并且保持不变。

以下表达式在portal_normal中进行计算,但显然这些语句都不能完成全部工作:

$page                               ## seems to represent the current page
$page.getGroup()                    ## seems to represent the current Org
$page.getGroup().getExpandoBridge() ## seems to give me an "Expando bridge" object

只有最后一步——我通过名称识别我想要检索其值的特定自定义字段——失败了。

我不允许编写任何自定义Java来实现这一点,所以不用费心启动Eclipse。8) 只有完全可以在Velocity模板中实现的解决方案才是可接受的。

感谢您的帮助。

共有2个答案

漆雕硕
2023-03-14

在Liferay 7为我工作:

创建一个自定义字段类型"site",将数据填充到站点设置中,并使用到主题模板中,将此数据调用到增殖主题中:

如果VM文件:

#set ($site_custom_field = $layout.getGroup().getExpandoBridge().getAttribute("site_custom_field_key"))
<h1>$site_custom_field</h1>

如果FTL文件:

<#assign site_custom_field = layout.getGroup().getExpandoBridge().getAttribute("site_custom_field_key")>
<h1>${site_custom_field}</h1>
谭宏盛
2023-03-14

在Liferay Portal 6.1.0中,我可以使用以下方法获得组织的自定义字段的值。也许它太冗长了,但至少它是有效的。:)

...
## Null variable
#set($null = $some-never-used-variable-name)
...
#set($organization = $null)
#if ($layout.getGroup().isOrganization())
    ## Get organization by id
    #set($organizationLocalService = $serviceLocator.findService("com.liferay.portal.service.OrganizationLocalService"))
    #set($organizationId = $layout.getGroup().getOrganizationId())
    #set($organization = $organizationLocalService.getOrganization($organizationId))
#end
...
...
#if ($organization != $null)
    ## Use value of custom field of organization
    $organization.getExpandoBridge().getAttribute("org-home-page")
#end    
...
 类似资料:
  • 我最近研究了一个使用Liferay 6.1的Android应用程序。但是,我无法使用Liferay API更新自定义字段的值。 我将自定义字段挂接到users_adminportlet用户/details.jsp,并使公共视图可访问: 还挂接到登录portletcreate_account.jsp: 因此,我需要一个定制的Web服务来通过http客户端访问这些值,以发布/获取值。知道从哪里开始找吗

  • 我在Liferay 7.1中设置了一个名为CustomLogo的页面自定义字段。我想访问它的值在免费标记模板。看完留档 我已经为自定义字段设置了视图权限(所有用户角色)。我还检查了列名和值是否正确地设置在增殖数据库(扩展表)中。然而,我得到以下错误: 在观察堆栈跟踪时,我看到有一个空指针异常,它声明: 如上所述,我已经为自定义字段设置了浏览权限。我还仔细检查了钥匙、错别字和可能的错误,但没有成功。

  • 问题内容: 这是我的对象类: 我将其添加到速度上下文中,如下所示: 但是,在编写模板时,以下内容将不会呈现地址字段(但是,当我将getter添加到Address类时,它可以正常工作) 是否可以通过Velocity访问对象上的公共字段而无需添加吸气剂? 问题答案: 默认不是。您需要配置其他Uberspect实现。

  • 给定类 我试图定义一个自定义的代码生成模板,该模板将创建一个方法,其形式如下 我有以下速度模板,但输出不正确。 输出为 当我试图向字符串添加一个结束大括号(})时,模板-它无法呈现。

  • 问题内容: 我在中的代码: 在“ settings.py”中: 但我得到一个错误: 问题答案: 在该范围内不是变量。你必须首先从上下文中获取它。传递t给装饰器并添加context到tag参数。 像这样:

  • 我正在使用Liferay 6.1 CE、Tomcat、Vaadin 6.8.4,这可能是我的错误做法,也可能是我遗漏了一些明显的东西 我需要为我的用户控制crud功能-允许访问他们所属的组织和低于该组织的任何子组织。(我正在使用Liferay的组织表) 在尝试简化权限管理时,我曾希望将用户分配给层次结构中的组织。然后可以根据分配给该组织和任何父组织的角色来确定默认权限。这似乎对常规角色很有效——但