Ajax无法在portlet配置jsp页面中工作(liferay 6.2)

时间:2015-11-07 16:23:41

标签: ajax liferay portlet

使用 MVCPortlet(Liferay 6.2)

这个ajax调用是否适用于我的portlet的常规jsp,但是无法在portlet的配置页面上工作(当你点击右上角然后配置和选项时打开的jsp)。< / p>

在这种情况下,portletURL正确显示(警告),JS返回成功但控制器从未收到客户端请求。

这是ajax电话:

$.ajax({
    url: portletURL,
    type: 'POST',
    dataType: 'text',
    cache: false,
    data: {
        test: test
    },
    success: function(data) {
        alert('success ajax');
    },
    error: function(http, message, exc) {
        alert('error ajax');
    }
});

同样,这段代码完全适用于另一个jsp。

这对任何人都响了吗? 提前谢谢。

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。尝试了liferay-portlet:resourceURL portletConfiguration="true"portlet:resourceURL,也可以在发送之前手动解析和修改网址。资源服务方法(无论是serveResource的实现,还是使用Spring MVC或Liferay MVC(MVCPortlet的实现类)的全新方法)都没有在配置模式下工作。

我的解决方案是完全避免资源服务,而是选择行动阶段(p_p_lifecycle = 1)。它在AJAX中是完全可行的,只需在我的processAction实现类中覆盖DefaultConfigurationAction方法。

希望这能为我节省无数个小时的时间。

答案 1 :(得分:0)

我在Liferay 7.0.x中遇到了同样的问题,我找到了一个可以应用于6.2的工作解决方案,但我没有测试实例。

您必须使用java代码生成资源网址。举个例子:

LiferayPortletURL resourceURL = (LiferayPortletURL) renderResponse.createResourceURL();
resourceURL.setPortletId(ParamUtil.getString(request, "portletResource"));
resourceURL.setResourceID("yourId");

然后使用resourceURL.toString()生成网址。 serverResource必须在portlet类中实现。