2016-08-05 22 views
0

Mit folgendem Code mit primefaces 6,0Kann nicht den Parameter der Aktion in meiner Bohne erhalten primefaces Diagramm

<p:diagram value="#{myBean.model}" var="m" > 
    <f:facet name="element"> 
     <h:commandButton value="#{m.id}" action="#{myBean.test(m.id)}"/> 
    </f:facet> 
</p:diagram> 

und

@Named 
@SessionScoped 
public class MyBean implements Serializable { 
    ..... 
    private DefaultDiagramModel model; 
    //getter and setter 

    public String test(int id) { 
     System.out.println("ID IS : " + id); 
     return null; 
    } 
    .... 
} 

ich den Wert der ID auf der Taste erhalten label (gerendert auf der xhtml-Seite).

Aber ich bekomme immer die Nummer

ID: 0

auf dem IDE-Konsole

Wenn ich mit action="#{myBean.test(4)}" meinen Code ändern, die ich in der IDE-Konsole erhalten

Wenn ich meinen Code mit action="#{myBean.test(6)}" ändern bekomme ich in der IDE-Konsole

Aber wenn ich zurück zu action="#{myBean.test(m.id)}" komme ich bekomme immer in der IDE-Konsole die Nummer 0

Aber der Wert, wenn die ID gut auf Knopfaufkleber auf der xhtml Seite gerendert wird

Non Exceptio n wird geworfen!

Irgendwelche Hilfe bitte?

Antwort

0

Werfen Sie einen Blick in how-to-pass-a-parameter-along-with-hcommandbutton. Ich habe das Beispiel mit <f:param> überprüft und es funktioniert wie ein Charme in Ihrem Fall.

Also in Ihrem Fall

<p:diagram value="#{myBean.model}" var="m" > 
    <f:facet name="element"> 
     <h:commandButton value="#{m.id}" action="#{myBean.test}"> 
      <f:param name="elementId" value="#{m.id}" /> 
     </h:commandButton> 
    </f:facet> 
</p:diagram> 

Und in Bohne

public String test() { 
    String elementId= FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("elementId"); 
    System.out.println("ID IS : " + elementId); 
    return null; 
} 
+0

Posting nur ein Link könnte die Frage beantworten, ist aber überhaupt nicht sehr nützlich. Sollte der Link jemals offline gehen oder ungültig werden, wird Ihre Antwort nutzlos. Denken Sie daran, dass Links Ihre Antwort verbessern sollen und nicht dazu da sind, qualitativ hochwertige Antworten zu ersetzen. –

+0

Danke für den Rat, ich habe die Antwort mit einem Beispiel erweitert, wie man ein Beispiel in dieser speziellen Frage verwendet. – rkarczmarczyk