2017-09-13 87 views
0

Liferay的靜態URL我想在Liferay的一個靜態網址提供一些數據。例如,假設要提供包含來自「http://server.com/whatever/user」的已登錄用戶的json,以便該專家中的所有portlet都可以讀取它。現在我可以使用portlet來完成它,但是我必須使用配置面板來設置url,我不喜歡那樣。動態數據

我已經看到了,我可以把JSP文件與靜態的內容,但不知道如何訪問會話,用戶信息等

友好的URL似乎完成類似的東西,但似乎過於複雜和專注於獲得一個簡單的網址,我不在乎。因此,如何在一個靜態url中獲得一些內部數據(我不介意它是友好的,長的還是短的,但總是相同的),所以Liferay中的每個元素都可以讀取它?

第四編輯:另一種方式把它...

在我的日食我有這樣的樹:

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

如何訪問在一個瀏覽器,JSP,而不必去Liferay的面板,並把門戶的網頁的菜單?

第五編輯:我沒有研究任何更多的時間,但我有這個在我的筆記...

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

這直接去到portlet,有時。 PLID來自

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

這對我來說沒有任何解決方案,因爲,它並不總是工作。有時你會得到一個數字標識符,有時你會得到一個零。我敢打賭,portlet的名稱和war是不正確的,所以它沒有找到portlet,但是,如何找到portlet的新名稱?可惜的是,我放棄了名字來源的代碼,但是來自Liferay。

第六次編輯:我想要做的是能夠調用一個固定的URL,其中包含Liferay內部的一些數據,並根據該數據獲取信息。

回答

1

這裏有幾個方面:

每個portlet已經經歷了一個請求屬性訪問用戶名爲ThemeDisplay

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

檢查ThemeDisplay的界面,你爲了得到有各種選項當前用戶的ID或對象。

你問JSON交付 - 這將需要經過Liferay的,而不是(直接)通過JSP在您的個人Web應用程序。原因是任何由Liferay處理的請求都將包含用戶的信息,但是作爲任何適當的Web應用程序,它與任何針對另一個Web應用程序的請求是完全分開的:除非Liferay包含,否則您的JSP將有一個與此無關的不同會話Liferay的會議。(我希望這個解釋很有意義)

如果你寫了一個servletFilter鉤子,你可能還沒有初始化門戶上下文(Liferay 6.x已經有一段時間了,因爲在這裏模糊不清)。如果你在portlet方面,你可能需要做的比你想象的要多。

您擁有的一個選擇是自動將每個頁面嵌入一個Portlet(例如,當它已部署時,它可用)。例如,您可以將Portlet配置爲自動包含在每個頁面中,例如,已經爲聊天Portlet完成。該portlet不需要任何UI,只需要公開其resourceURL,以便您可以在任何地方使用它。

但是,我懷疑你使用它,因爲每個portlet都有信息。 但我可能也只是不明白你的所有要求...

+0

我只需要一個portlet的規範url。如果我複製粘貼由Liferay生成的url,它的效果很好,但是使用了Liferay控制面板給出的URL,它可能會在沒有通知的情況下更改,從而中斷鏈接。 – Saiyine

+0

沒有規範的「url到portlet」。這取決於它在哪個頁面上。但是您可以在每個單獨的頁面上使用它的resourceURL,或者僅使用一個,並通過通用配置爲每個Portlet提供其名稱。或者只是使用每個Portlet的ThemeDisplay。 –