2016-08-30 80 views
0

我需要做下面的結構:不同的JSP呈現在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,但我不知道如何。如果你不明白我在做什麼,但對這個主題有所瞭解,請在評論中寫下你的評論,我會給予更多信息。提前致謝!


OK,我給你我的例子:

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> 

爲什麼這個代碼不工作?我應該怎麼做才能實現 不同的renderURL顯示不同的jsps?

+0

嘗試使用一樣,如果(pageName.equals( 「SOME_PARAMETER」)) – rickz

+1

「我總是有NullPointerException異常」 - 你知道他們爲什麼發生,對不對?您甚至可以在每次運行NullpointerException時停止調試器。堆棧跟蹤也應該有助於查找您正在取消引用空指針的位置。如果你在這裏指向一個堆棧跟蹤,讓我們也知道代碼中的哪一行對應於發生異常的行。 –

回答

0

請在比較之前先檢查pageName是否爲「not null」。 使用StringUtils.isNotEmpty(..) class ref進行比較前檢查「如果字符串不爲空且不爲空」。 Source Post

0

用字符串值替換變量和應工作 注:把變量之間的報價使它串不變量

你的代碼應該是這樣的:

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

我編輯了主帖,你可以看看它嗎? – German

+0

你能否指定你的MVC庫? –

+0

這是默認的Liferay的6.2庫,沒有別的。 – German

0

可能有不止一個你得到NullPointerException的原因。這是因爲您檢查的參數不存在於請求中,該值將爲空。最好調試它以找出確切的問題。

0

嘗試getPortletContext().getRequestDispatcher(ADD_BOOK_PAGE_PATH).include(request,response)代替include(ADD_BOOK_PAGE_PATH, request, response)