2017-07-19 16 views
0

SelectManyCheckboxのイベントリスナーは、チェックボックスをクリックしても呼び出されません。プリムフェイスのイベントリスナーが呼び出されない理由SelectManyCheckbox?

マイSelectManyCheckboxコード:

SelectManyCheckbox smcb = new SelectManyCheckbox(); 

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

    smcb.getChildren().add(item); 

私が試してみました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); 

ともvalueChangeListenerの:

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

    smcb.addValueChangeListener(new CustomValueChangeListener()); 

上記の方法の両方が動作しません。

チェックボックスをオンまたはオフにしたときに呼び出されるように、イベントリスナーを設定するにはどうすればよいですか?

+0

なぜあなたはJavaでそれをする必要がありますか? – Kukeltje

答えて

0

jsfコードからvalueChangeListenerを呼び出してBeanの最後で選択を行い、ajaxイベントを実行しようとするとよいでしょう。

JSF Code: 
<p:selectManyCheckbox id="custom" columns="1" layout="pageDirection" value="#{dapBean.selection}" disabled="#{!dapBean.status}" 
        valueChangeListener="#{dapBean.checkListener}"> 
    <f:selectItems value="#{dapBean.toolOptions}" var="tool" itemLabel="#{tool.toolLabel}" itemValue="#{tool.toolLabel}" /> 
    <f:ajax event="valueChange" update = "@form"></f:ajax> 
</p:selectManyCheckbox> 

これは、バックエンドのvalueChangeListenerを使用してバックアップできます。

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

} 

あなたはあなたの選択を取得することができますチェックボックスのようなだけでなく、未チェックの項目をチェックしたり、オフに毎回。

希望すると助かります!

+0

おかげで提案しました。私はすでにjsfで定義されているSelectManyCheckboxのValueChangeListenerと同様にajaxイベントリスナーを使用していますが、この場合(データの動的性質のため)、バッキングBeanでSelectManyCheckboxを作成する必要があります。バッキングビーンで作成されたSelectManyCheckboxにValueChangeListenerイベントとajaxイベントを使用することはできませんか? – amah

関連する問題