2012-10-12 15 views
14

ich einige einige Probleme mit Primefaces 3.2 und JSF 2.1 haben.Primefaces p: command mit der Aktion nicht genannt

My-Code wie folgt aus:

<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> 

Wenn ich einen Blick auf Primefaces nehmen meine p Stellen: command brauchen

actionListener="#{myBean.myActionMethod}" 

und meine Bean eine Methode, wie

public void myActionMethod(){} 

brauchen ich habe ein h:form um meinen p:toolbar-Tag!

My Bean ist ViewScoped.

Meine Abhilfe ist In *.xhtml Datei

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

In MyBean.java

private String myEvent; 

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

Dies funktioniert für mich, aber ich denke, das ist sehr schmutzig-Code ist.

Kann mir alle helfen?

+0

Wo ist das Problem? Was passiert, wenn Sie es in der Vitrine versuchen? –

+0

Wenn ich hinzufügen, die Action Methode wird das Ereignis nicht aufgerufen. – user1740789

+3

Haben Sie versucht, 'type =" button "' von Ihren Befehlsschaltflächen zu entfernen? –

Antwort

11

Versuchen Sie, diese

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

Ich wünsche wirklich, einen Tag der IDE könnten die Entwickler darüber warnen, anstatt einfach die Methodensignatur Mismatch ;-) – Leo

+1

Für die Zukunft ignorieren: In meinem Fall hat ich das Attribut type = Taste von einem Beispiel kopiert und gefragt, warum Sie diesen Code funktioniert und mein Knopf nicht. – Thomas

+2

Entfernen von type = "button" behoben mein Problem – Fabii

Verwandte Themen