Aquí está el problema: actionlistener no quiere ser despedido

@ManagedBean(name="hotelsController")
@SessionScoped
   public class HotelsController implements Serializable {
      public void requestHotelAvail(ActionEvent event) {
         request = new Request(df.format(arrivalDate), df.format(departureDate));
      }
   }

y xhtml

<h:panelgroup id="rooms"/>
<h:form  id="hotelSearch">
            <p:commandButton actionListener="#{hotelsController.requestHotelAvail}" value="submit" update="rooms" />
</h:form>

He intentado todo lo que podía búsqueda de un cambio de @managedbean a @component conjunto import a import javax.faces.event.ActionEvent;

Pero todavía no dispara nada.

Formulario está en un p:accordion y cuando se utiliza con h:commandbutton funciona bien

EDITAR: lo siento por el mal camino. las habitaciones actualizaciones después de que haga clic en pero actionListener no es despedido. así que las habitaciones no va a obtener ningún dato nuevo. Código importante en requestHotelAvail necesita ser despedido antes de la actualización de las habitaciones y su no.

EDIT2: PrimeFaces 2.2.1 – he leído todo el manual para primefaces pero no hay explicación para esto, como he hecho todo lo que dice

He intentado usar action en lugar de actionListener sin ActionEvent pero nunca hacen nada. el uso de <h:commandbutton action="#{hotelscontroller.requestHotelAvail}"/> funciona muy bien, pero quiero que el motor de ajax para actualizar sólo que rooms panelgroup

ACTUALIZACIÓN: Ahora funciona. Forma no podía ser en <p:accordion> pero, ¿por qué y cómo habilitar allí? Ahora voy a trabajar sin él.

  • Con «no dispara nada» ¿en realidad significa 1) El método no se invoca (según lo confirmado por un depurador, registrador o sysout), o 2) La rooms panelgroup no se actualiza?
  • No resuelve su problema, pero es una buena práctica para el componente por encima de todos los demás componentes siempre que esto no interfiera con otras formas (evitar, además, formas internas)
  • También, poner un poco de sysout's en que el método para ser seguro o crear otro método en la clase… en el servidor de registro no aparece nada? Como no pudo encontrar el grano, o de la acción/de la propiedad no se encuentra? Si usas Netbeans asegúrese de que su clase está construido correctamente…
  • Lo PrimeFaces versión? Trate de action en lugar de actionListener y quitar que ActionEvent argumento de que no estás usando de todos modos.
InformationsquelleAutor Mazmart | 2011-11-25

2 Comentarios

  1. 3

    Sospecho que el diferente comportamiento de h:commandLink viene de ajax/no-ajax de procesamiento.

    Por defecto si no utiliza f:ajax – h:commandLink no es ajax y toda la página se vuelve a procesar. Primefaces p:commandLink es el uso de ajax y se indican las habitaciones como del componente actualizado. En el caso de las habitaciones está fuera de forma por lo que más bien debe ser abordado como :habitaciones (mente el colon) en lugar de sólo las habitaciones.

    actualización: ¿has probado a ajax con h:commandLink? Sería:

    <h:commandButton action="#{hotelscontroller.requestHotelAvail}" value="submit">
      <f:ajax render=":rooms"/>
    </h:commandButton>

    También no estoy tan familiarizado con primefaces, pero tal vez usted puede tratar de indicar de forma explícita el componente adicional process="@this" – aunque supongo que esto será por defecto como en la biblioteca básica.

    • Yo no estoy usando h:commandLink y el problema es que no se trata de la update pero la actionListener. actualización Funciona bien
    • Veo, actualizado mi respuesta a explorar otra posibilidad.
    • bien <h:commandButton action="#{hotelscontroller.requestHotelAvail}" value="submit"> <f:ajax render=":rooms"/> </h:commandButton>ahora se comporta como <p:commandButton> así panelgroup se actualiza pero la acción no es despedido. tiene que haber mayor problema para managedBean o en todo el xhtml
    • Puedes probar a poner es fuera p:acordeón? Suena como un componente de la iteración y estos tienden a ser problemático.
    • Gracias a que funciona como un encanto, pero ahora tengo que averiguar por qué y cómo usarlo en <p:accordion..
    • Por favor, envíe un problema si usted piensa que esto es un problema con el p:acordeón.

  2. 0

    Intenta inspeccionar la respuesta:

    Abrir Chrome o Firefox -> Inspeccionar Elemento -> Red y seguir la llamada ajax.

    p:commandButton no se desencadena la acción

Dejar respuesta

Please enter your comment!
Please enter your name here