У меня проблема с запуском 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
не имеет эффектов (протестировано на движке приложения googles).
Обновление 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 внутри пользовательского интерфейса: повтор