I think you'll need to add a rerender attribute to the commandlink, otherwise its just a regular post of the form and not an AJAX request. In my experience that means the oncomplete doesn't get called correctly and the apex:param doesn't get set up. If you don't have anything to sensibly rerender, what I usually do is stick a big apex:outputPanel around everything on the page.
I think you'll need to add a rerender attribute to the commandlink, otherwise its just a regular post of the form and not an AJAX request. In my experience that means the oncomplete doesn't get called correctly and the apex:param doesn't get set up. If you don't have anything to sensibly rerender, what I usually do is stick a big apex:outputPanel around everything on the page.