重定向到服务资源中的页面时遇到问题:生命射线



>我在 serveResource 方法中重定向到另一个页面时遇到问题。我收到以下异常

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

以下是我的服务资源方法

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();
        }
    }

如何解决这个问题?

谢谢

根据您的评论,您正在从不同的 portlet 调用serveResource。你不应该那样做。

如果在不同的 Portlet 之间共享一个实现,请将其分离到一个公共组件中。您自己调用生命周期方法没有任何业务。此外,您可能正在自己实例化该 Portlet 类(否则将没有要调用 serveResource on) 的对象),它可能根本不会调用init() - 我们再次来到这里:调用生命周期函数是门户的业务,而不是您的。

如果我们谈论 jsp-servlet ,我们只能通过两种方式从一个 jsp 切换到另一个 jsp。

1)发送重定向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);

参考

哼!

谢谢。

最新更新