The problem is you are ajax updating this whole thing including the nested ajaxlink:
<div wicket:id="container"> <div wicket:id="count"></div> <a wicket:id="link">link</a> </div> it causes the wicket-ajax js stuff header contributed everytime the link is clicked. Open the ajax debug window to see. This re-init wipe out the postcallhandler install on page load so there is nothing there to call once the link is clicked. I cannot explain why you need to close and re-open the browser for this to happen. It shouldn't work at all. I'm sure Matej and Igor can explain. Change your page to this and only ajax update the "count" then you have no problem: <div wicket:id="container"> <div wicket:id="count"></div> </div> <a wicket:id="link">link</a>