2017-07-19 2 views
0

Ereignis-Listener für SelectManyCheckbox wird nicht aufgerufen, wenn auf ein Kontrollkästchen geklickt wird.Warum Event-Listener nicht für Hauptflächen aufgerufen wird SelectManyCheckbox?

Mein SelectManyCheckbox Code:

SelectManyCheckbox smcb = new SelectManyCheckbox(); 

    UISelectItem item = new UISelectItem(); 
    item.setItemValue("ItemValue"); 
    item.setItemLabel("ItemLabel"); 

    smcb.getChildren().add(item); 

Ich habe versucht, AjaxBehavior:

AjaxBehavior ajaxBeh = (AjaxBehavior) fc.getApplication().createBehavior(AjaxBehavior.BEHAVIOR_ID); 
    ajaxBeh.setRender(Collections.singletonList("@this")); 
    ajaxBeh.setExecute(Collections.singletonList("@this")); 
    ajaxBeh.setImmediate(true); 
    ajaxBeh.setTransient(true); 
    ajaxBeh.addAjaxBehaviorListener(new AjaxBehaviorListener() { 
     @Override 
     public void processAjaxBehavior(AjaxBehaviorEvent e) 
       throws AbortProcessingException { 
      System.out.println("Event Triggered"); 
     } 
    }); 

    smcb.addClientBehavior("change",ajaxBeh); 

und auch ValueChangeListener:

public class CustomValueChangeListener implements ValueChangeListener { 
    @Override 
    public void processValueChange(ValueChangeEvent arg0) 
      throws AbortProcessingException { 
     System.out.println("processValueChange"); 
     } 
    } 

    smcb.addValueChangeListener(new CustomValueChangeListener()); 

Sie beide der oben genannten Methoden nicht funktionieren.

Wie kann ich einen Ereignis-Listener einrichten, so dass er aufgerufen wird, wenn ein Kontrollkästchen aktiviert oder deaktiviert ist?

+0

Warum müssen Sie es in Java tun – Kukeltje

Antwort

0

Ich denke, Sie könnten sehr gut versuchen, ein Ajax-Ereignis aus dem JSF-Code zu starten, indem Sie eine valueChangeListener aufrufen und an der Auswahl am Bean-Ende arbeiten.

Dies kann mit einem valueChangeListener am Back-End gesichert werden.

Java Code: 
public void checkListener(ValueChangeEvent e) { 
    System.out.println(e.getNewValue().toString()); 
    System.out.println(e.getOldValue().toString()); 

} 

Jedesmal, wenn Sie eine Checkbox aktivieren oder deaktivieren Sie Ihre sowie unkontrollierte Einträge ausgewählt bekommen können.

Hoffe es hilft !!

+0

Danke für den Vorschlag. Ich habe bereits ValueChangeListener sowie Ajax-Ereignis-Listener für SelectManyCheckbox verwendet, die in JSF definiert sind, aber in diesem Fall (weil die Daten dynamisch sind) muss ich SelectManyCheckbox in Backing Bean erstellen. Sollte es nicht möglich sein, ValueChangeListener- und ajax-Ereignisse für SelectManyCheckbox zu verwenden, die in Backing-Beans erstellt wurden? – amah

Verwandte Themen