2011-07-20 18 views
7

Primefaces 2.2.1t: commandButton Ajax no se llama en el interior t: DataList

Mojarra 2.1.2

Tengo un método sofisticado en mi grano de JSF:

public void saySomething() { 
    log.debug("SAY SOMETHING !"); 
} 

Y un simple botón en el JSF:

<p:commandButton 
    value="say something" 
    process="@this" update="@none" action="#{timetableBean.saySomething}" /> 

al hacer clic en el botón, resultados en mi sencillo registro:

DEBUG PhaseTracker - BEFORE PHASE INVOKE_APPLICATION 5 
DEBUG TimetableBean - SAY SOMETHING ! 
DEBUG PhaseTracker - AFTER PHASE INVOKE_APPLICATION 5 

Vamos al siguiente caso simple. Al colocar ese botón idénticos dentro de una p: DataList así:

<p:dataList id="groupUsers2" value="#{timetableBean.group.users}" var="user" itemType="circle" style="padding:0; margin: 0;"> 
    <p:commandButton 
     value="#{user.data['selected'] ? 'V' : 'X'}" 
     process="@this" update="@none" action="#{timetableBean.saySomething}" /> 
    <p:commandLink value="#{user.userId} - #{user.name}" process="@this" /> 
</p:dataList> 

Al hacer clic en el botón, resultados en mi sencillo registro:

DEBUG PhaseTracker - BEFORE PHASE INVOKE_APPLICATION 5 
DEBUG PhaseTracker - AFTER PHASE INVOKE_APPLICATION 5 

El método de saySomething() no se realiza!

¿Qué hice mal?

+0

El problema podría ser el atributo 'process'. ¿Qué es esto realmente decir porque se creará un componente CommandButton para cada elemento de '# {scheduleBean.group.users}'. ¿Qué se supone que '@ this' realmente se procesa? –

+0

@maple_shaft: lo cambié a process = "@ form", y aún no funciona, el método de escucha no se invoca .. – bertie

Respuesta

9

Problema resuelto.

encontrado la solución en here

Para oyente a ser invocada, los componentes dentro de la p: DataList debe ser encapsulado con p:column

<p:dataList id="groupUsers2" value="#{timetableBean.group.users}" var="user" itemType="circle" style="padding:0; margin: 0;"> 
    <p:column> 
    <p:commandButton 
     value="#{user.data['selected'] ? 'V' : 'X'}" 
     process="@this" update="@none" action="#{timetableBean.saySomething}" /> 
    <p:commandLink value="#{user.userId} - #{user.name}" process="@this" /> 
    </p:column> 
</p:dataList> 

Strange sin embargo, no llegué a ver esto en la documentación , ya que no especifica la columna p: Tal vez está en la errata de Primefaces 2.2.1 doc?

Problemas relacionados here.

+0

Sí, tampoco lo veo en la documentación 2.2.1. Lo siento, no fui más de una ayuda. –

+0

Página 118 afirma que. –

+0

@ Cagatay Civici: Hola Optimus. En mi documento 2.2, p.118 está hablando de la paginación ajax, y todavía no lo veo decir sobre p: column. Tal vez está implícito? – bertie

Cuestiones relacionadas