2013-02-02 176 views
3

在JSP頁面中,我們可以通過使用 request.getServerName()和request.getServerPort()獲取服務器名稱和服務器端口。`如何從Liferay velocity模板獲取服務器名稱和服務器端口?

正如我們不能從Liferay的Velocity模板獲得HttpServletRequest的,有沒有其他的辦法到 獲得服務器名稱和服務器端口?請用小代碼片段回答..

+0

當你說速度模板,談論主題模板或Web內容顯示模板或佈局模板? 如果我的問題對你來說看起來很神祕,我會理解的,如果是的話,告訴我我會盡量讓自己更清楚並且解釋更多。 – Ar3s

+0

thame提供的portal-normal.vm文件。 – Shibu

回答

4

在您的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作爲任何常規速度litteral。

希望這會有所幫助。


NOTA BENE!

請注意,您無法訪問Liferay中所有類型的速度模板下的完全相同的一組變量和宏。 有不同的套

  • 主題模板
  • 佈局模板
  • 網頁內容模板
+0

非常感謝您的回覆。 – Shibu

+0

沒問題,它讓我在遙遠的(並且旋轉的)過去中遭受的綽綽有餘,所以我不想讓其他人忍受同樣的事情;) – Ar3s

0

我已經建立了自己的網址與下面的代碼登錄彈出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> 
相關問題