2013-01-12 85 views
4

我需要在頁面上刷新一個table而無需重新加載完整頁面。有沒有人知道這樣做的好方法?刷新Liferay MVC portlet中的JSP頁面的一部分

我用一個表單獨創建了一個jspf頁面,並通過Ajax請求<portlet:renderURL>呈現它,但是該頁面包裝在默認的liferay主題中。有沒有另一種方法來獲得沒有主題的頁面日期?

<portlet:renderURL var="testURL"> 
    <portlet:param name="jspPage" value="/jspf/test.jspf" /> 
</portlet:renderURL> 

<script> 
$("#test-button").click(function() { 
    $("#test-table").load("<%= testURL %>"); 
}) 
</script> 
+0

後一些代碼,您正試圖使我們可以想出了一些東西...... –

回答

2

使用Ajax在Liferay中-MVC你應該創建一個resourceURL鏈接,並在portlet類serveResource方法處理它。

<portlet:resourceURL var="testURL"> 
    <portlet:param name="pageAddress" value="/jspf/test.jspf" /> 
</portlet:resourceURL> 

<script> 
$("#test-button").click(function() { 
    $("#test-table").load("<%= testURL %>"); 
}) 
</script> 

那麼你應該提供正確的結果serveResource你的portlet類的方法。 除了可以通過使用resourceRequest對象

String pageAddress = resourceRequest.getParameter("pageAddress"); 
+0

不幸的是得到你的參數(pageAddress),它的回報JSP作爲不處理文本JSP-標籤。 'PortletRequestDispatcher dispatcher = getPortletContext()。getRequestDispatcher(pageAddress); \t \t dispatcher.include(request,response);' – dmitrievanthony

+1

好吧,在將* .jspf重命名爲* .jsp後,它可以正常工作 – dmitrievanthony

+1

最好使用ajax來發送所需的信息,而不是頁面部分的整個邏輯,例如加載一個網格,你應該只需要從服務器得到一個JSON而不是顯示網格的邏輯 – Hekmatof