7

我想在我的 jsp 文件中进行 ajax 调用,该文件调用 portlet 的 processAction 方法,基于 processAction 方法的成功消息,我需要再次调用 portlet 的 serveResource 方法,请提供一些示例..

4

4 回答 4

10

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

看看我的这个博客。

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

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

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

谢谢Jignesh

于 2011-09-29T13:52:27.463 回答
3

这个问题对我有用。

基本上,控制器

@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>
于 2013-05-08T19:38:23.567 回答
0

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

于 2012-05-11T11:32:40.883 回答
0

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

于 2011-09-09T15:16:16.857 回答