【问题标题】:Different jsp rendering in LiferayLiferay中不同的jsp渲染
【发布时间】:2016-08-30 17:24:37
【问题描述】:

我需要进行以下构造:

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,但我不知道如何。如果您不了解我的内容,但对这个主题有了解,请在 cmets 中写下 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?

【问题讨论】:

  • 尝试使用like if (pageName.equals("some_parameter"))
  • “我总是有 NullpointerExceptions”——你知道它们为什么会发生,对吧?您甚至可以让调试器在每次遇到 NullpointerException 时停止。堆栈跟踪还应该有助于定位您取消引用空指针的确切位置。如果你在这里指向一个堆栈跟踪,让我们也知道代码中的哪一行对应于发生异常的行。

标签: jsp parameters liferay render


【解决方案1】:

在进行比较之前,请先检查 pageName 是否为“not null”。 在进行比较之前,使用 StringUtils.isNotEmpty(..) class ref 检查“如果字符串不为空且不为空”。 Source Post

【讨论】:

    【解决方案2】:

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

    您的代码应如下所示:

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

    【讨论】:

    • 我编辑了主帖,你能看一下吗?
    • 能否请您指定您的 MVC 库?
    • 这是默认的 Liferay 6.2 库,仅此而已。
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-08
        • 1970-01-01
        • 1970-01-01
        • 2014-07-26
        • 1970-01-01
        相关资源
        最近更新 更多