2017-09-13 3 views
0

Liferayの静的なURLからデータを提供したい。たとえば、「http://server.com/whatever/user」のログインユーザーを含むjsonにサービスを提供し、プロプライエクト内のすべてのポートレットがそれを読むことができるとします。今はポートレットで行うことができますが、設定パネルでURLを設定する必要があります。私はそれを気に入らないのです。私は、静的コンテンツとJSPファイルを置くことができますが、セッション、ユーザーの情報にアクセスする方法がわからないことを見てきました Liferay動的データの静的URL

フレンドリーURLは類似した何かを達成するように見えるが、過度に思えます複雑で簡単なURLを得ることに集中しています。

Liferayプロイエクトのすべての要素で読み込めるように、静的なURLにいくつかの内部データを取得するにはどうすればよいですか(親しみやすいかどうかは気にしませんが、常に同じです)。

FOURTH EDIT:それを置くための別の方法...私のEclipseで

私はこの木を持っている:

/whatever-war/docroot/html/fancy-porlet/list.jsp

Liferayパネルに移動してWebのメニューにポートレットを配置することなく、ブラウザでjspにアクセスするにはどうすればよいですか?

FIFTH EDIT:私はこれ以上研究する時間がなかったが、私は私のノートでこれを持っている...

https://server/language/c/portal/layout?p_l_id=plid

これは時々、ポートレットに直進。 PLIDは、それは常に動作しない、ので、それは私のためのソリューションですん

PortalUtil.getPlidFromPortletId(themeDisplay.getScopeGroupId(), name_of_portlet_and_war) 

から来ています。場合によっては数字の識別子を取得することもありますが、ゼロを取得することもあります。私はポートレットの名前と戦争が間違っているので、ポートレットを見つけられないと思いますが、ポートレットの新しい名前はどうやって見つかりますか?悲しいことに、私は名前が由来するコードを捨てましたが、Liferayから来ています。

6個目の編集:私がしたいのは、固定URLを呼び出して、Liferayの内部データを取得し、そのデータに基づいて情報を取得することです。

答えて

1

いくつかの側面がここにあります

すべてのポートレットがすでにThemeDisplayと呼ばれるリクエスト属性を介してユーザへのアクセス権を持っている:

ThemeDisplay themeDisplay = (ThemeDisplay) request.getAttribute(WebKeys.THEME_DISPLAY); 

あなたが得るために持っている様々なオプションについてThemeDisplayのインターフェイスをチェック現在のユーザーのIDまたはオブジェクト。

あなたはJSON配信について質問しました。これはLiferayを経由する必要があり、個々のWebアプリケーションのJSPを経由する必要はありません。その理由は、Liferayで処理されたリクエストにはユーザの情報が含まれていますが、適切なwebappとは別のwebappでリクエストされたリクエストとは完全に別です.Liferayに含まれていない限り、JSPは何の関係もないLiferayのセッション。

servletFilterフックを書くと、まだポータルコンテキストが初期化されていない可能性があります(Liferay 6.xは私にとっては暫くの間、ここではあいまいです)。ポートレット側にいる場合は、予想以上に多くのことを行う必要があります。

1つのオプションは、すべてのページにポートレットを自動的に埋め込むことです(デプロイされた時点など)。ポートレットは、すべてのページに自動的に組み込まれるように構成できます。たとえば、チャット・ポートレット用に作成されます。そのポートレットはUIを持つ必要はなく、どこからでも使用できるように、resourceURLを公開するだけです。

しかし、どのポートレットにも手元にある情報があることを考えれば、私は何とかそれを使用することに疑念を抱いています。 しかし、私はあなたのすべての要件を理解していないかもしれません...

+0

私はちょうどポートレットに標準的なURLが必要です。 Liferayによって生成されたURLを貼り付けてコピーすると、うまくいきますが、Liferayコントロールパネルによって指定されたURLが使用されます。 – Saiyine

+0

正式な「ポートレットへのURL」はありません。それはどのページにあるかによって異なります。しかし、個々のページでresourceURLを利用できるようにすることもできますし、それぞれを使用して、共通の構成で各ポートレットに名前を付けることもできます。または、各ポートレットからThemeDisplayを使用するだけです。 –

関連する問題