【问题标题】:How to get Server Name and Server Port from Liferay velocity template?如何从 Liferay 速度模板中获取服务器名称和服务器端口?
【发布时间】:2013-01-17 12:53:35
【问题描述】:

在jsp页面中,我们可以通过使用获取服务器名称和服务器端口 request.getServerName() 和 request.getServerPort()。`

由于我们无法从 Liferay 速度模板中获取 HttpServletRequest,有没有其他方法可以 获取服务器名称和服务器端口?请用小代码sn-p回答..

【问题讨论】:

  • 当您说 Velocity 模板时,是指主题模板还是网页内容显示模板或布局模板?如果我的问题对你来说似乎很神秘,我会理解,如果是这样,请告诉我,我会尽量让自己更清楚并解释更多。
  • portal-normal.vm 文件在 Thame 中可用。

标签: liferay-6 liferay-velocity


【解决方案1】:

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

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

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

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

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

就这样吧

$request.getServerName()

$request.getServerPort()

此外,如果您想将速度变量设置为其中之一,只需执行以下操作

#set ($my_amazing_variable = $request.getServerPort())

然后您就可以将$my_amazing_variable 用作任何常规速度文字。

希望这会有所帮助。


没有好处!

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

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

【讨论】:

  • 非常感谢您的回复。
  • 没问题,它让我在遥远的(和旋转的)过去遭受了足够多的痛苦,所以我不希望其他人遭受同样的痛苦;)
【解决方案2】:

我已经使用以下代码创建了我的 URL,用于登录弹出窗口。谢谢 Ar3s。

#set($protocol = "http://")
#set($host = "$request.getServerName()")
#set($port = "$request.getServerPort()")
#set($column = ":" )
#set($url = "/c/portal/login?p_l_id=10858" )
#set($hrefurl = "$protocol$host$column$port$url")


<a class="sign-in" data-redirect="false" href="$hrefurl" id="yui_patched_v3_11_0_1_1420097083820_231" role="menuitem" title=""> <span id="yui_patched_v3_11_0_1_1420097083820_865" class="nav-item-label"> Sign In </span> </a>

【讨论】:

    猜你喜欢
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    • 1970-01-01
    • 2020-11-03
    • 2012-08-13
    • 2016-05-06
    • 2021-05-09
    相关资源
    最近更新 更多