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..
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 theinsertVariablesmethod, 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
and
Furthermore, if you want to set a velocity variable to one of those, just do as follows
You’ll then be able to use
$my_amazing_variableas 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