如何从 Liferay 速度模板获取服务器名称和服务器端口?

Shi*_*ibu 4 liferay-6 liferay-velocity

在jsp页面我们可以通过request.getServerName()和request.getServerPort()获取Server Name和Server Port。

由于我们无法从 Liferay 速度模板中获取 HttpServletRequest,还有其他方法可以同时获取 Server Name 和 Server Port 吗?请用一个小代码片段回答..

Ar3*_*r3s 5

在您的 Liferay 资源中,您可以找到com.liferay.portal.velocity.VelocityVariablesImpl.

这个类放在portal-impl/src/com/liferay/portal/velocity/VelocityVariablesImpl.java.

如果您检查速度上下文的所有条目(如velocityContext.put(String key, Object value)),特别是方法中的条目insertVariables,您将看到这将在名称下公开 httpServletRequest "request"

因此,在您的模板中,您可以像访问任何其他速度上下文对象一样使用 key 访问您的请求对象$request

然后,这个对象将可用于它的所有方法和属性(如果是公共的)。

所以就做

$request.getServerName()
Run Code Online (Sandbox Code Playgroud)

$request.getServerPort()
Run Code Online (Sandbox Code Playgroud)

此外,如果要将速度变量设置为其中之一,请执行以下操作

#set ($my_amazing_variable = $request.getServerPort())
Run Code Online (Sandbox Code Playgroud)

然后,您就可以将其$my_amazing_variable用作任何常规速度垃圾。

希望这可以帮助。


请注意!

请注意,在 Liferay 中所有类型的速度模板下,您无法访问完全相同的一组变量和宏。有不同的套装

  • 主题模板
  • 布局模板
  • 网页内容模板