使用 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。
这对任何人都响了吗? 提前谢谢。
答案 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类中实现。