4

jspページでは、request.getServerName()とrequest.getServerPort()。`を使用してサーバー名とサーバーポートを取得できます。

Liferay速度テンプレートからHttpServletRequestを取得できないため、サーバー名とサーバーポートの両方を取得する他の方法はありますか?小さなコードスニペットで答えてください。

4

2 に答える 2

5

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のすべてのタイプのベロシティテンプレートで、まったく同じ変数とマクロのセットにアクセスできるわけではないことに注意してください。にはさまざまなセットがあります

  • テーマテンプレート
  • レイアウトテンプレート
  • Webコンテンツテンプレート
于 2013-02-04T13:58:13.403 に答える
1

ログインポップアップ用に以下のコードで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>
于 2015-01-06T13:49:46.720 に答える