Liferay 中的不同 jsp 渲染

Different jsp rendering in Liferay

我需要进行以下构造:

String pageName = request.getParameter("pageName");
if ("some_parameter".equals("pageName")) {
    include("html/one.jsp", request, response);
}
if ("third_parameter".equals("pageName")) {
    include("html/two.jsp", request, response);
}

但是我总是遇到NullPointerException这样的问题

我的意思是我尝试让不同的 renderURL 显示不同的 jsps,但我不知道怎么做。如果你不明白我在说什么,但对这个主题有了解,请在评论中写下 smth,我会提供更多信息。提前致谢!


好的,我举个例子:

public static final String VIEW = "view";                           //view.jsp parameter
public static final String ADD_BOOK = "add_book";                   //add_book.jsp parameter

private final String VIEW_PAGE_PATH = "/html/view.jsp";             //view.jsp path parameter
private final String ADD_BOOK_PAGE_PATH = "/html/add_book.jsp";     //add_book.jsp path parameter

@Override
public void render(RenderRequest request, RenderResponse response)
        throws PortletException, IOException {

    String pageName = request.getParameter("pageName");
    if (pageName.equalsIgnoreCase(ADD_BOOK)) {              
        include(ADD_BOOK_PAGE_PATH, request, response);
    } else {
        include(VIEW_PAGE_PATH, request, response);
    }
}

和我的 view.jsp:

<portlet:renderURL var="addBookVar">
    <portlet:param name="pageName" value="<%=Library.ADD_BOOK %>"/>
</portlet:renderURL>

<a href="${addBookVar}">Add Book</a>

为什么这段代码不起作用?我应该怎么做才能达到这种情况 不同的 renderURLs 显示不同的 jsps?

用字符串值替换你的变量,应该可以工作 注意:将变量放在引号之间使其成为字符串而不是变量

您的代码应如下所示:

String pageName = request.getParameter("pageName");
if (pageName.equals("some_parameter")) {
   include("html/one.jsp", request, response);
}
if (pageName.equals("third_parameter")) {
   include("html/two.jsp", request, response);
}

您获得 NullPointerException 的原因可能不止一个。是因为你检查的参数在请求中不存在,值null.So最好调试一下,在这里找出确切的问题。

请先检查 "not null" 的 pageName,然后再进行比较。 在进行比较之前,使用 StringUtils.isNotEmpty(..) class ref 检查 "if string is not null and not empty"。 Source Post

尝试 getPortletContext().getRequestDispatcher(ADD_BOOK_PAGE_PATH).include(request,response) 而不是 include(ADD_BOOK_PAGE_PATH, request, response)