gpt4 book ai didi

java - 在 Liferay 6.2 速度模板中获取用户的名字和姓氏

转载 作者:行者123 更新时间:2023-12-01 07:27:17 27 4
gpt4 key购买 nike

我正在尝试显示类似的内容:

Welcome John Doe

在我的 Liferay 基于速度的模板中,该模板在 Liferay 6.2 GA1 CE 上的 WebContent 中使用

到目前为止,我的代码如下:

#set ($userLS = $portal.getClass().forName('com.liferay.portal.service.UserLocalServiceUtil'))
#set ($userId = $getterUtil.getLong($request.get("theme-display").get("user-id")))
#set ($user = $userLS.getUserById($userId))

<div class="user-welcome">
#if($user.isMale())
<span class="welcome-msg">Bienvenido</span><br>
#else
<span class="welcome-msg">Bienvenida</span><br>
#end
<span class="username">$user.getFullName() $user.getLastName()</span>
</div>

我遇到的错误是:

  1. $user.isMale() 始终返回 false
  2. 在我的span.username中,输出是代码本身。它不会打印该值。

提前致谢

最佳答案

编辑:预先回答您的问题,我将在下面留下其余的解释:

如果要访问当前用户,可以从$permissionChecker获取。因此,只需将前三行替换为:

 #set( $user = $permissionChecker.getUser() )
<小时/>

这是我对为什么你的问题中使用的技术不起作用的旧解释:

检查$userLS.getClass().getName():它已经无法正确解析。最有可能的原因是这个设置:

#
# Set a comma delimited list of Java classes the Velocity engine cannot have
# access to.
#
velocity.engine.restricted.classes=\
java.lang.Class,\
java.lang.ClassLoader,\
java.lang.Thread

Check this Wiki article了解 serviceLocator,但请注意,出于充分的原因,它也无法从模板中获得。

#
# Set a comma delimited list of variables the Velocity engine cannot
# have access to. This will affect Dynamic Data List templates, Journal
# templates, and Portlet Display templates.
#
velocity.engine.restricted.variables=serviceLocator

如果你是唯一一个编写模板的人(或者如果你信任每个人都这样做),那么可以在portal-ext.properties中更改此配置:将serviceLocator配置为不受限制,然后调用

#set($userLocalService = $serviceLocator.findExceptionSafeService(
"com.liferay.portal.service.UserLocalService"))

积极的一面:这将简化错误处理,因为ExceptionSafeService将透明地忽略所有异常 - Velocity无法处理它们,如果没有这种行为,您根本看不到任何结果(并且没有错误消息的提示) ,如果发生异常。

关于java - 在 Liferay 6.2 速度模板中获取用户的名字和姓氏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22275142/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com