While we drag portlet, liferay internally call functions from layout.js. So we have to hook liferay layout javascript.Like Spring Aop we can call method after, around for liferay javascript.
When we drag portlets on liferay portal, "saveIndex" method of layout.js is called. You have to hook this method with 'after' aspect. If you inspect saveIndex method, then there is findIndex method. you have to borrow some logic from here too. One more thing, dragging portlet has class "aui-dd-dragging" class during draggin event. So you have to paste this code on main.js of your theme to hooking liferay javascript for ajax request of your portlet.
----------------------------------Java Script method for main.js--------------------------
Liferay.on(
'allPortletsReady',
/*
This function gets loaded when everything, including the portlets, is on
the page.
*/
function() {
var A =AUI();
Liferay.Util.actsAsAspect(Liferay.Layout);
Liferay.Layout.after(
'saveIndex',
function () {
var userDrag = A.one('.aui-dd-dragging');
var columnNode = userDrag.get('parentNode');
var currentColumnId = Liferay.Util.getColumnId(columnNode.get('id'));
var customUrl = 'http://localhost:8080/web/guest/home?p_p_id=liferayInAction_WAR_liferayInActionportlet';
customUrl = customUrl+'&_liferayInAction_WAR_liferayInActionportlet_p_p_col_id='+currentColumnId;
alert('customUrl '+ customUrl);
AUI().use('aui-io-request, aui-node', function(A){
A.io.request(
customUrl , {
method : 'POST',
on: {
success: function() {
alert('success');
}
}
}
);
});
});
}
);
-----------------------End------------------------
I am not getting any other way for portletUrl right now so I have to hard code 'cuspomUrl'.
In your doView method of your portlet, you can easily get currentColumnId as
String columnId = ParamUtil.getString(renderRequest,"p_p_col_id","column-1");
and render your jsp according to columnId value.
请登录并以举报不当内容。