0

チェックグループがあり、グループ内のチェックボックスを選択すると、選択/チェックされたチェックボックスの数を取得したい。
以下のコードでは、選択した数のチェックボックスを取得できますが、選択を解除または削除すると、まだ選択されていることがわかります。
例 : 2 を選択しましたが、2 つの文字列が選択されました。
1 つのチェックボックスの選択を解除しても、2 つの文字列が選択されています。1つの文字列がチェックされることを期待していますが。

コードを以下に示します。

final CheckGroup myGroup = new CheckGroup("group", new ArrayList()) {
    @Override
    protected Collection<String> convertValue(String[] values) throws ConversionException {
        Collection<String> myCollection = super.convertValue(values);
        checkedString.addAll(myCollection);
        HashMap<Integer, String> myTempList = new HashMap<Integer, String>();
        for (String myString : checkedString) {
            myTempList.put(myString.getSystemId(), myString);
        }
        checkedString.clear();
        for (Entry<Integer, String> myEntry : myTempList.entrySet()) {
            checkedString.add(myEntry.getValue());
        }
        return checkedString;
    }

    @Override
    protected void onSelectionChanged(Collection newSelection) {
        newSelection = checkedString;
    }

    @Override
    protected boolean wantOnSelectionChangedNotifications() {
        return true;
    }
};


add(myForm);
myForm.add(myGroup);
4

1 に答える 1

0

コンポーネントに動作を追加する

sampleChckbox.add(new AjaxFormComponentUpdatingBehavior("onclick"){
  @Override
  protected void onUpdate(AjaxRequestTarget target) {
 //perform your operation here       
}

このメソッドは、「onClick」イベントで Ajax リクエストを起動します。これにより、実行時にバックエンド ロジックが更新されます

編集 :

CheckGroup クラスに限定するには、AjaxFormChoiceComponentUpdatingBehavior を使用します。

AjaxFormChoiceComponentUpdatingBehaviorCheckGroups およびsで使用する動作RadioGroupです。イベントでを使用するAjaxFormComponentUpdatingBehaviorと、IE でこのバグに遭遇します。はこれを適切に処理し、の各 にイベント ハンドラを追加します。onchangeAjaxFormChoiceComponentUpdatingBehavioronclickCheckCheckGroup

補足として、そのメールで Igor が述べたことは、 はではなくCheckBoxに置き換えることができるということです。ソースが示すように、 with の便利なサブクラスにすぎません 。AjaxCheckBoxCheckAjaxCheckBoxCheckBoxAjaxFormComponentUpdatingBehavior("onclick")

于 2014-07-08T10:30:25.110 に答える