jspページでは、request.getServerName()とrequest.getServerPort()。`を使用してサーバー名とサーバーポートを取得できます。
Liferay速度テンプレートからHttpServletRequestを取得できないため、サーバー名とサーバーポートの両方を取得する他の方法はありますか?小さなコードスニペットで答えてください。
jspページでは、request.getServerName()とrequest.getServerPort()。`を使用してサーバー名とサーバーポートを取得できます。
Liferay速度テンプレートからHttpServletRequestを取得できないため、サーバー名とサーバーポートの両方を取得する他の方法はありますか?小さなコードスニペットで答えてください。
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のすべてのタイプのベロシティテンプレートで、まったく同じ変数とマクロのセットにアクセスできるわけではないことに注意してください。にはさまざまなセットがあります
ログインポップアップ用に以下のコードで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>