在serveResource:liferay中重定向到页面时遇到问题

时间:2015-01-27 13:11:24

标签: liferay liferay-6

我在serviceResource方法中重定向到另一个页面时遇到问题。 我得到了以下异常

java.lang.IllegalStateException: Config is null, please ensure that your init(config) method calls super.init(config)

以下是我的serveResource方法

public void serveResource(ResourceRequest resourceRequest, ResourceResponse resourceResponse) throws PortletException {


        System.out.println("Serve Resource Method Called");


        try {

            String url = getURL(Long.valueOf(resourceRequest.getParameter("key")));
            resourceRequest.setAttribute("url", conn.getURL().toString());
        include("/html/viewImage.jsp", resourceRequest, resourceResponse);
} catch (Exception e) {

            e.printStackTrace();
        }
    }

如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:0)

根据您的评论,您从其他portlet调用serveResource。你不应该这样做。

如果您在不同的portlet之间共享实现,请将其分隔为一个公共组件。您自己无法调用生命周期方法。此外,您可能正在自己实例化该portlet类(否则无法调用serveResource),这可能根本不会调用init() - 这里我们再次:它& #39;门户网站的业务是调用生命周期功能,而不是你的。

答案 1 :(得分:0)

如果我们谈论jsp-servlet,我们可以通过双向切换到另一个jsp。

1)SendRedirect 2)转发页面

如果我们谈论纯servlet,那么转发页面将如下所示:

RequestDispatcher dispatcher = request.getRequestDispatcher("/template.jsp");
if (dispatcher != null) dispatcher.forward(request, response);

现在为了回答你的问题。 Portlet JSR 286在RequestDisptcher之上为portlet创建了一个接口,它将生成调度程序引用。 下面的代码具有上述含义。

PortletRequestDispatcher dispatcher = resourceRequest.getPortletSession().getPortletContext().getRequestDispatcher("/html/viewImage.jsp");
dispatcher.forward(resourceRequest, resourceResponse);

reference

HTH!

感谢。