代码之家  ›  专栏  ›  技术社区  ›  Vinod

如何从servlet调用泛型Portlet方法?

  •  0
  • Vinod  · 技术社区  · 10 年前

    我已经创建了一个portlet,并且能够在servlet中执行所有业务逻辑。我需要在servlet中获取救生筏登录用户的详细信息。所以我创建了一个类,它将扩展 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
    }
    }
    

    有什么建议吗?

    1 回复  |  直到 10 年前
        1
  •  1
  •   Olaf Kock    10 年前

    你不能,我的答案和你的答案很相似 very similar question .

    这是 框架的 (门户的)业务调用portlet的生命周期方法。 你的

    你需要重新思考你的问题,想出一个不同的架构。或者将您的问题告诉我们,以提出与您当前正在寻求的解决方案不同的解决方案。

    与这个答案不同,我假设在这种情况下,您处于同一个web应用程序中(portlet和servlet部署在同一个webapp中)。然而,就像在那 other question ,portlet的请求通过门户进行路由,而servlet的请求则不通过。您将没有可用的数据。