2012-10-12 142 views
14

Tengo algunos problemas con Primefaces 3.2 y JSF 2.1.Primefaces p: CommandButton con acción no llamada

Mi código como este:

<p:toolbar id="jeditortoolbar" styleClass="jeditortoolbar"> 
     <p:toolbarGroup align="left" height="25" style="height:25px"> 
     <p:commandButton type="button" title="#{msg.beenden}"/> 
     <p:commandButton type="button" title="#{msg.neu}"/> 
     </p:toolbarGroup> 
</p:toolbar> 

Cuando tomo un vistazo a Primefaces mostrar mis p: commandButton necesitan

actionListener="#{myBean.myActionMethod}" 

y mi frijol necesita un método como

public void myActionMethod(){} 

¡Tengo un h:form alrededor de mi etiqueta p:toolbar!

My Bean is ViewScoped.

Mi Solución alternativa es En *.xhtml Archivo

<p:commandButton type="button" title="#{msg.neu}" onclick="addNewEmptyFile()"/> 
<p:remoteCommand name="addNewEmptyFile" update=":codeTabForm"> 
    <f:setPropertyActionListener value="#{true}" target="#{myBean.myEvent}"/> 
</p:remoteCommand> 

En MyBean.java

private String myEvent; 

public void setMyEvent(String value){ myActionMethod();} 

Esto funciona para mí, pero creo que esto es un código muy sucio.

¿Todos pueden ayudarme?

+0

¿Dónde está el problema? ¿Qué sucede si lo intentas como en el escaparate? –

+0

Cuando agrego el ActionListener Methode, no se llama al evento. – user1740789

+3

¿Intentó eliminar 'type =" button "' de los botones de comando? –

Respuesta

11

probar este

Bean.java

@ManagedBean 
@ViewScoped 
public class Bean { 

    public String testButtonAction() { 
     System.out.println("testButtonAction invoked"); 
     return "anotherPage.xhtml"; 
    } 

    public void testButtonActionListener(ActionEvent event) { 
     System.out.println("testButtonActionListener invoked"); 
    } 

} 

page.xhtml

<p:toolbar> 
    <p:toolbarGroup> 
    <p:commandButton action="#{bean.testButtonAction}"/> 
    <p:commandButton actionListener="#{bean.testButtonActionListener}"/> 
    </p:toolbarGroup> 
</p:toolbar> 
+5

Realmente deseo algún día que el IDE advierta al desarrollador sobre esto en lugar de simplemente ignorar la falta de coincidencia de la firma del método ;-) – Leo

+1

Para referencia futura: en mi caso copié el tipo de atributo = botón de algún ejemplo y me pregunté por qué este código funciona y mi botón no. – Thomas

+2

eliminando type = "button" solucionó mi problema – Fabii

Cuestiones relacionadas