2014-12-10 6 views
1

В настоящее время я использую datatable в портлете liferay, и мне нужно сделать ajax-вызов и вернуть Json.Return json view content without liferay theme

Так что в моем контроллере я писал:

@RenderMapping(params = "action=doAjaxSearch") 
    public String ajaxSearch(RenderRequest request, RenderResponse response, @RequestParam int iDisplayStart, 
      @RequestParam int iDisplayLength, @RequestParam String sEcho, Model model) { 

     model.addAttribute("sEcho", sEcho); 
     model.addAttribute("count", 20); 

     return AJAX_RESULT; 
    } 

Где AJAX_RESULT это имя мнение, используются для создания моего JSon:

{<% префикс @ TagLib = "весна" URI = "HTTP : //www.springframework.org/tags " %> <% @ TagLib префикс = "C"= URI "http://java.sun.com/jsp/jstl/core" %>

" sEcho ":," iTotalRecords ": $ {число}, "iTotalDisplayRecords": $ {COUNT}, "aaData": []}

Все работает отлично, но ответ возвращается содержит JSon + LifeRay тему. Я хотел бы просто загрузить содержимое jsp.

Заранее благодарим вас за помощь.

+0

Вы должны использовать ResourceMapping вместо RenderMapping. И напишите свой json-контент в aResourceResponse.getWriter(). Write (JSON) –

+0

Привет, Pankaj, я не хочу использовать ResourceMapping, потому что мой json содержит много дополнительного кода (html), поэтому я предпочитаю использовать файл jsp вместо того, чтобы писать все код в java-части. –

ответ

1

При создании URL-адреса вы добавляете, чтобы указать состояние окна вашего URL как Exclusive. например.

<portlet:renderURL windowState="exclusive"> 
    <portlet:param name="action" value="doAjaxSearch" /> 
</portlet:renderURL> 
+0

Отлично! Большое спасибо Arnaud –