Оформление запроса Ajax в портлетах для liferay 6 - PullRequest
7 голосов
/ 10 августа 2011

Я хочу сделать ajax-вызов внутри моего jsp-файла, который вызывает метод processAction портлета, основываясь на сообщении об успешном выполнении метода processAction. Мне нужно сделать еще один вызов метода serveResource портлета, приведите несколько примеров.

Ответы [ 4 ]

10 голосов
/ 29 сентября 2011

В портлетах за методами processAction () автоматически следует метод render, поэтому ответ ajax будет встроен во фрагмент HTML, сгенерированный методом render.Так что писать ajax в портлетах немного сложно.

Посмотрите на мой блог.

http://ajax -and-portlets.blogspot.com / 2011/09 / ajax-best-Practice-in-portlets.html

Это дает обзорную картинуо том, как лучше всего реализовать ajax в портлетах (для портлетов JSR-168 и JSR-286).

Если вам нужны образцы портлетов, вы можете связаться со мной через контактную информацию из блога.Я буду рад помочь вам.

Спасибо, Джинеш

3 голосов
/ 08 мая 2013

Этот вопрос работал для меня.

В основном, контроллер

@Controller
@RequestMapping("VIEW") // VIEW mapping (as opposed to EDIT)
public class MyPortlet {
    @RenderMapping
    public String handleRenderRequest(RenderRequest request, RenderResponse response) {
        return "defaultRender";
    }

    @ResourceMapping("myURL")
    public void handleMyResource(ResourceRequest request, ResourceResponse response) {
        OutputStream outStream;
        try {
            outStream = response.getPortletOutputStream();
            ObjectMapper mapper = new ObjectMapper();

            mapper.writeValue(outStream, "Hello world!");
        } catch (IOException ex) {
            // TODO : Do something with errors.
        }
    }
}

и JSP:

<portlet:resourceURL id="myURL" var="myURL"/>

<script type="text/javascript">
    var urlink = "<%= myURL %>";
    $.ajax({
        url: urlink,
        cache: false,
        type: "POST",
        success: function(jsondata) {
            console.log(jsondata);
        }
    });
</script>
0 голосов
/ 11 мая 2012

Вы можете проверить мой портлет, в котором есть примеры для вызова методов serveResource и processAction. Ajax Jquery Portlet

0 голосов
/ 09 сентября 2011

на основе сообщения об успешном выполнении метода processAction Это не правильный способ сделать это. При вызове URL-адреса действия портлета в ответ вы получаете обычный ответ рендеринга, поэтому вы получите страницу со всеми портлетами. Вместо этого вам следует использовать функцию обслуживания ресурсов Portlet 2.0 и вернуть свой ответ в качестве ресурса.

...