在portlet中为liferay 6发出Ajax请求

时间:2011-08-10 06:55:24

标签: ajax jquery liferay liferay-6

我想在我的jsp文件中调用一个调用portlet的processAction方法的ajax调用,根据processAction方法的成功消息我需要另外调用一个portlet的serveResource方法,请提供一些例子..

4 个答案:

答案 0 :(得分:10)

在portlet中,processAction()方法会自动跟随render方法,因此ajax响应将嵌入render方法生成的HTML片段。因此在portlet中编写ajax有点棘手。

看看我的博客。

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

它提供了洞察视图,了解在portlet中实现ajax的最佳实践(对于JSR-168和JSR-286 portlet)。

如果您需要示例portlet,可以通过博客中的联系详细信息与我联系。我很乐意帮助你。

由于 Jignesh

答案 1 :(得分:3)

This question为我工作。

基本上,控制器

@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>

答案 2 :(得分:0)

  

基于processAction方法的成功消息   这不是正确的方法。   在响应中调用portlet操作URL时,您会获得通常的呈现响应,因此您将获得包含所有portlet的页面。   相反,您应该使用Portlet 2.0资源服务功能,并将您的响应作为资源返回。

答案 3 :(得分:0)

您可以查看我的portlet,其中包含serveResource和processAction方法调用的示例。 Ajax Jquery Portlet