У меня проблема с запуском запроса ajax с 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>
Первый h:graphicImage
правильно открывает диалог, p:commandButton
правильно запускает actionListener, но p:ajax
не имеет никакого эффекта (проверено на движке приложения Google).
Обновление 1 Изменение event
с onclick на click было абсолютно правильным (спасибо BalusC): теперь отображается p:dialog
. Но все же метод tag()
не вызывается. Я обновил xhtml
-Code на f:metadata
, потому что есть одно дополнительное ведение журнала. Я думаю, что это связано с p:ajax
и вызовом bean-компонента, я пробовал actionListener, action и listener (из документации Primefaces) с тем же результатом:
- Механизмы приложения регистрируют вызов
getParameter(ComponentSystemEvent event)
, а Firebug показывает это частичное обновление:<changes><update id="otCounter"><![CDATA[<span id="otCounter">0</span>]]></update>
.. - Вызов
public void tag(ActionEvent ae)
не регистрируется (также пробовалpublic void tag()
)
p:commandButton
корректно обновляет счетчик.
Обновление 2 Я удалил f:viewParam
и f:event
для простоты и теперь использую listener
и public void tag()
, но метод не вызывается :-(
Обновление 3 Ответ BalusC правильный, у меня есть другие проблемы при его использовании здесь: JSF и p:ajax внутри p :dataTable внутри ui:repeat