1

6 つのポートレットで構成されるページを定義し、それをportal-ext.propertiesファイル内でデフォルトの Lnding ページとして構成しました。

データベースに連絡するためのカスタムログインページがあり、ユーザーが有効になったら、 /user/test/home を使用してこのページにリダイレクトし、使用してみましたhttp://localhost:8086/user/test/home

しかし、これはうまくいきませんでした。

public void doView(RenderRequest request, RenderResponse response)
            throws PortletException, IOException {

        response.setContentType("text/html");

        System.out.println("Inside the doView Method");
        PortletRequestDispatcher dispatcher = null;
        if (this.name.isEmpty()) {
            dispatcher = getPortletContext().getRequestDispatcher(
                    "/WEB-INF/jsp/AllInOne_view.jsp");
        } else {
            request.setAttribute("name", this.name);
            dispatcher = getPortletContext().getRequestDispatcher(
                    "http://localhost:8086/user/test/home");
        }
        this.name = "";
        this.action = "";
        dispatcher.include(request, response);
    }


17:53:47,765 ERROR [render_portlet_jsp:154] java.lang.NullPointerException
    at org.ravi.learning.AllInOne.doView(AllInOne.java:57)
    at javax.portlet.GenericPortlet.doDispatch(GenericPortlet.java:328)
    at javax.portlet.GenericPortlet.render(GenericPortlet.java:233)
    at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:100)
    at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:64)
    at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:93)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)

AllinOne.java は私のカスタム GenericPortlet クラスです AllInOne.java:57 は

    dispatcher.include(request, response);

更新された部分はこちら

これはJavaクラスです

package org.ravi.learning;

import java.io.IOException;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.GenericPortlet;
import javax.portlet.PortletException;
import javax.portlet.PortletRequestDispatcher;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;

public class AllInOne extends GenericPortlet {
    String action = "";
    String name = "";

    public void processAction(ActionRequest request, ActionResponse response)
            throws PortletException, IOException {

        System.out.println("Inside the Process Action Method new");

        this.action = request.getParameter("myAction");

        if (this.action.equals("formAction")) {
            this.name = request.getParameter("personName");

        }
        String urlpaths = "http://localhost:8086/user/test/home";
        response.sendRedirect(urlpaths);

    }

    public void doView(RenderRequest request, RenderResponse response)
            throws PortletException, IOException {

        response.setContentType("text/html");


    }

}

新しいユーザーとして画像を投稿できないので、画像についてはこの外部リンクを参照してください

http://tinypic.com/view.php?pic=a43nlv&s=5

4

1 に答える 1

2

PortletContext.getRequestDispatcher() の jsr168 および jsr286 ドキュメントによると、

パス名はスラッシュ ( / ) で始まる必要があり、現在のコンテキスト ルートを基準として解釈されます。

したがって"http://localhost:8086/user/test/home"、パラメーターとして使用するのは間違っています。

おそらくやりたいことはリダイレクトです。ポートレット環境では、アクションリクエストでのみ実行できますActionResponse.sendRedirect(String)

于 2012-04-10T15:02:21.073 に答える