Liferay静态URL用于动态数据

时间:2017-09-13 07:52:25

标签: liferay liferay-6

我想在Liferay中提供静态网址中的一些数据。例如,假设从“http://server.com/whatever/user”提供包含已登录用户的json,这样proyect中的所有portlet都可以读取它。现在我可以用一个portlet来做,但是我必须用配置面板设置url而我不喜欢它。

我已经看到我可以将jsp文件与静态内容放在一起,但不知道如何访问会话,用户等信息。

友好的网址似乎完成了类似的事情,但看起来过于复杂,专注于获得一个简短易用的网址,我不在乎。

那么,我如何在静态网址中获取一些内部数据(我不介意它是友好的,长的还是短的,但总是一样的)所以Liferay proyect的每个元素都可以读取它?

第四次编辑:另一种说法......

在我的日食中我有这棵树:

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

如何在浏览器中访问该jsp而无需使用Liferay面板并将portlet放入网页菜单中?

第五次编辑:我没有时间继续研究,但我的笔记中有这个......

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。

第六次编辑:我想要做的是能够调用一个固定网址,其中包含Liferay内部的一些数据,并根据该数据获取信息。

1 个答案:

答案 0 :(得分:1)

这里有几个方面:

每个portlet都可以通过名为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对我来说已经有一段时间了,请原谅我这里有点模糊)。如果您处于portlet端,则可能需要执行比预期更多的操作。

您拥有的一个选项是自动在每个页面上嵌入一个portlet(例如,当它已部署时,它可用)。例如,您可以将portlet配置为自动包含在每个页面上,并为聊天portlet完成。该portlet不需要任何UI,只需要公开其resourceURL,以便您可以在任何地方使用它。

但是,我怀疑你是否使用它,因为每个portlet都有已有的信息。 但我可能也不理解你的所有要求......