I have problem firing an ajax request with Primefaces
<f:metadata>
  <f:viewParam name="token" value="#{clientBean.token}"/>
  <f:event type="preRenderView" listener="#{clientBean.getParameter}" />
</f:metadata>
<h:form>
  <h:graphicImage id="id1" url="/images/circle-ok.png" onclick="dTag.show();"/>
  <p:commandButton id="id4" value="T" actionListener="#{clientBean.tag}" />  
  <!-- This does not work -->
  <h:graphicImage id="id2" url="/images/circle-ok.png">
    <p:ajax id="id3" event="onclick" onstart="dTag.show();"
            actionListener="#{clientBean.tag}" />
  </h:graphicImage>
</h:form>
The first h:graphicImage opens the dialog correctly, the p:commandButton triggers the actionListener correctly, but the p:ajax has no effects (tested on googles app engine).
Update 1
Changing the event from onclick to click was absolutely right (thanks BalusC): Now the p:dialog is shown. But still the tag() method is not invoked. I've updated the xhtml-Code  with f:metadata because there is one additional logging.
I think it's related to p:ajax and the invocation of the bean, I've tried actionListener, action and listener (from the documentation of Primefaces) with the same result:
- The app engines logs the invocation of 
getParameter(ComponentSystemEvent event)and Firebug shows this partial-update:<changes><update id="otCounter"><![CDATA[<span id="otCounter">0</span>]]></update>.. - The invocation of 
public void tag(ActionEvent ae)is not logged (also triedpublic void tag()) 
The p:commandButton updates the counter correctly.
Update 2
I've removed the f:viewParam and f:event for simplicity and now are using listener and public void tag(), but the method is not called :-(
Update 3 The answer of BalusC is correct, I have other problems when using it here: JSF and p:ajax inside p:dataTable inside ui:repeat