我已经创建了一个portlet,并且我的所有业务逻辑都在servlet中执行。我需要在servlet中获取liferay登录用户详细信息。所以我创建了一个扩展GenericPortlet
的类。现在我的问题是如何调用该类我需要执行GenericPorlet未实现的方法。我的代码如下,
public class ActionProcess extends GenericPortlet {
public void init() throws PortletException{
super.init();
}
public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException {
User user = (User) request.getAttribute(WebKeys.USER);
ThemeDisplay td =(ThemeDisplay)request.getAttribute(WebKeys.THEME_DISPLAY);
User urs = td.getUser();
System.out.println("doView "+ urs);
System.out.println("doView "+ user);
}
}
现在我需要调用doView()
并将值返回给servlet。我怎么能这样做我的servlet代码。
@WebServlet("/demoClass")
public class demoClass extends HttpServlet {
private static final long serialVersionUID = 1L;
public demoClass() {
super();
// TODO Auto-generated constructor stub
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doPost(request, response); //
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//Here I am performing the business logic....
//How do I call the ActionProcess class here, I need to get the User name which is return by diView() method
}
}
有什么建议吗?
答案 0 :(得分:1)
你不能,我的答案与我对very similar question的回答非常相似。
框架的(门户网站)业务来调用portlet的生命周期方法。 不你的。
您需要重新考虑您的问题并提出不同的架构。或者向我们提出建议与您目前正在追求的解决方案不同的解决方案。
与答案不同,我假设在这种情况下,您处于同一个Web应用程序中(Portlet和Servlet部署在同一个Web应用程序中)。但是,就像在other question中一样,portlet的请求通过门户路由,而servlet的请求则不是。您没有可用的数据。