How to get Server Name and Server Port from Liferay velocity template?

强颜欢笑 提交于 2019-12-10 21:05:33

问题


In jsp page we can get Server Name and Server Port by using request.getServerName() and request.getServerPort().`

As we can't get HttpServletRequest from Liferay velocity template, Is there any other way to get both Server Name and Server Port ? Please answer with a small code snippet..


回答1:


In your Liferay sources you can find com.liferay.portal.velocity.VelocityVariablesImpl.

This class is placed under portal-impl/src/com/liferay/portal/velocity/VelocityVariablesImpl.java.

If you check all entries to velocity context (lines like velocityContext.put(String key, Object value)) and specially the ones in the insertVariables method, you'll see that this exposes you httpServletRequest under the name "request".

Therefore, in your template you access your request object as any other velocity context object with the key $request.

This object will, then, be usable with all it's methods and properties (if public).

So just do

$request.getServerName()

and

$request.getServerPort()

Furthermore, if you want to set a velocity variable to one of those, just do as follows

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

You'll then be able to use $my_amazing_variable as any regular velocity litteral.

Hope this helps.


NOTA BENE !

Note that you do not have access to the exact same set of variables and macros under all types of velocity templates in Liferay. There are different sets for

  • theme templates
  • layout templates
  • web-content templates



回答2:


I have created my URL with below code for Login Pop up.Thanks 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>


来源:https://stackoverflow.com/questions/14659374/how-to-get-server-name-and-server-port-from-liferay-velocity-template

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!