почему p: commandButton внутри p: диалогового окна не запускает actionListener? - PullRequest
3 голосов
/ 19 марта 2011
<h:form prependId="false">

<p:dialog modal="true">

<p:commandLink ajax="true" value="ok" actionListener="Bean.listenerMethod"/>

</p:dialog>

</h:form>

У меня были и другие элементы управления внутри формы.При нажатии на ссылку этот слушатель не был запущен.В чем может быть проблема?пожалуйста помогите!

Ответы [ 3 ]

2 голосов
/ 19 марта 2011

Вам необходимо объявить его как выражение метода EL, а не как простую строку.

actionListener="#{Bean.listenerMethod}"

Чтобы быть уверенным, #{Bean} должен быть действительным управляемым бином с именем управляемого бина "Bean"который, в свою очередь, содержит следующий метод

public void listenerMethod(ActionEvent event) {
    // ...
}

, где ActionEvent из пакета javax.faces, а не java.awt.

Если это все ещене работает, то это вызвано чем-то другим.Например, форма является вложенной, атрибут rendered оценен false и т. Д. Обзор см. В этом ответе .

1 голос
/ 16 марта 2015

Вы должны использовать <h:commandLink action="... /> вместо <p:commandLink actionListener="... />

Пример:

<h:commandLink id="elimina"
   action="#{listaBonificiModel.eliminaSelezionato()}"
   update="@(form)" oncomplete="PF('bonificoDialog').hide()"
   value ="Elimina" />
0 голосов
/ 13 октября 2012

Попробуйте

<h:form id="mainform">
    __________
    __________
    <p:dialog id="test" widgetVar="Testing">
       <h:form>
          <h:panelGrid columns="1">
             _________
             _________
          </h:panelGrid>
          <p:commandLink ajax="true" update="mainform" process="@all" value="ok" actionListener="#{Bean.listenerMethod}" oncomplete="Testing.hide()"/>
      </h:form>
    </p:dialog>
</h:form>

Спасибо

...