2007 年 4 月 30 日 23 時 58 分

有効・無効ボタンの実装


このアーカイブは同期化されません。 mixi の日記が更新されても、このアーカイブには反映されません。


では、ボタンの動作を作っていこう。

まずは、有効・無効ボタン。これはかなり簡単にできる。

========== ManageRulesAction#enable ==========
    public ActionForward enable(ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)
            throws Exception {

        // フォームを取得
        ManageFilterRulesForm manageForm =
                (ManageFilterRulesForm)form;

        // 選択されたルール番号を取得
        int[] selected = manageForm.getSelected();

        if (selected != null && selected.length > 0) {

            // 現在のフィルタ設定を読み込み
            Filter filter = FilterManager.load();

            // 有効化し
            List<FilterRule> rules = filter.getRules();
            for (int index : selected) {
                rules.get(index).setEnabled(true);
            }

            // 保存する
            FilterManager.save(filter);

        }

        // OK
        return mapping
                .findForward(Forwards.SUCCESS_KEY);

    }
========== end of ManageRulesAction#enable ==========

ManageFilterRulesForm の selected プロパティには、
選択されたルールの番号が入っているので、
対応するルールの enabled を true に設定するだけだ。

「無効」は有効とほぼ同じ。

========== ManageRulesAction#disable ==========
    public ActionForward disable(ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)
            throws Exception {

        // フォームを取得
        ManageFilterRulesForm manageForm =
                (ManageFilterRulesForm)form;

        // 選択されたルール番号を取得
        int[] selected = manageForm.getSelected();

        if (selected != null && selected.length > 0) {

            // 現在のフィルタ設定を読み込み
            Filter filter = FilterManager.load();

            // 無効化し
            List<FilterRule> rules = filter.getRules();
            for (int index : selected) {
                rules.get(index).setEnabled(false);
            }

            // 保存する
            FilterManager.save(filter);

        }

        // OK
        return mapping
                .findForward(Forwards.SUCCESS_KEY);

    }
========== end of ManageRulesAction#disable ==========
   
共通部分を別のメソッドにしてもよかったかも。

これで、有効無効が切り替わるようになった。



Copyright (c) 1994-2007 Project Loafer. All rights reserved.