-1

从最近几周开始,我开始在 Liferay 工作。我有几个关于 liferay 插件开发的问题,它们是

  1. 我们可以在插件中包含一个 servlet 吗?
  2. 如果是,那么哪一个可以拥有插件?它是一个portlet 还是一个钩子,还是一个ext?
  3. 如何http://liferayhost:8090/url/callback像在 web.xml 中那样将 servlet 映射到?
  4. 我们可以为 portlet 或 hook 编写 web.xml 吗?

请帮助我理解这些主题。

4

1 回答 1

0

我们可以在插件中包含一个 servlet 吗?

如果您正在创建Liferay Hook,您的doRun方法将获取RequestResponse对象,您可以使用它们分别处理RequestResponse

例如,您可以通过 Request 对象获取 Session Id、Cookie 等。

session=request.getSession(false);

Cookie[] cookies = request.getCookies();

您可以使用Response对象进行重定向,

response.sendRedirect("/PathToYourPage");

因此,您可以获得几乎所有可以作为 Servlet 获得的东西。

如果您正在开发一个Portlet插件,那么请记住它是Portlet您正在开发的,而不是Servlet. 如果Portlet你想要RequestResponse对象,你可以使用下面的代码

javax.servlet.http.HttpServletRequest request = (javax.servlet.http.HttpServletRequest) (FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("com.liferay.portal.kernel.servlet.PortletServletRequest")); 
javax.servlet.http.HttpServletResponse response = (javax.servlet.http.HttpServletResponse) (FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("com.liferay.portal.kernel.servlet.PortletServletResponse"));

在同一行中,您可以尝试Exts

如果你正在开发一个Theme插件,我真的不明白你想在那里实现什么Servlet

但是您仍然可以做的是,在您的主题vm文件templates夹下的文件中包含一个 JSP 页面。

$theme.include($themeServletContext, "/myJSP.jsp")

这个 JSP 页面可以放在WebContent文件夹下。在此myJSP.jsp,通过 JSTL/Scriplets 可以获取Request/Response对象

我希望这也能回答你的第二个问题。

如何像在 web.xml 中那样将 servlet 映射到 http:/liferayhost:8090/url/callback?

8090将是您通过提及索引在应用程序服务器中配置的端口号。

url值将是您在 Web 服务器(例如 Apache)中配置的 Web 应用程序名称(war 文件)名称uriworkers.propertiescallback将是您在应用程序中Servlet配置的 URL 模式。web.xml

我们可以为 portlet 或 hook 编写 web.xml 吗?

你可以同时web.xmlPortletHook。在 Hooks 的情况下,虽然如果你有基本配置不会抛出异常web.xml,但我不明白你想在那里做什么。

于 2012-11-26T11:55:00.357 回答