2007 年 4 月 6 日 21 時 23 分

フィルタ情報の変更を反映する


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


最近、タイトルが単調すぎていやな感じ。

昨日の続き。更新系をちゃっちゃと作ってしまおう。

まずは、/filter/update-info.do による更新処理。
edit-info.jsp からフォームが送信され、
FilterInfoForm 型インスタンスとして受け取り、
このデータを使ってパケットフィルタの設定を更新する。

まずは、Struts 設定ファイルの、<action> を修正する。

    <!-- 情報更新 -->

    <action path="/filter/update-info"
            name="filterInfoForm" scope="request"
            type="jp.loafer.test.actions.UpdateFilterInfoAction">

        <!-- 成功時は一覧画面へ戻る -->
        <forward name="success"
                path="/filter/list.do" />

    </action>

んでもって、Action を書く。

========== UpdateFilterInfoAction.java ==========
package jp.loafer.test.actions;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import jp.loafer.test.beans.Filter;
import jp.loafer.test.forms.FilterInfoForm;
import jp.loafer.test.util.FilterManager;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class UpdateFilterInfoAction extends
        Action {

    public UpdateFilterInfoAction() {
        super();
    }

    @Override
    public ActionForward execute(
            ActionMapping mapping,
            ActionForm form,
            HttpServletRequest request,
            HttpServletResponse response)
            throws Exception {

        // フォームを取得
        FilterInfoForm infoForm = (FilterInfoForm)form;

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

        // フィルタ情報のみ更新し
        filter.setInfo(infoForm.getInfo());

        // 保存する
        FilterManager.save(filter);
       
        // OK
        return mapping
                .findForward(Forwards.SUCCESS_KEY);
    }

}

========== end of UpdateFilterInfoAction.java ==========

Bean を作ってあるため、非常に簡単な内容だ。
infoForm.getInfo() で取得したインスタンスを、
そのまま filter.setInfo() で割り当てているが、
FilterInfoForm や Filter のスコープが短いので、
クローンを作らずにインスタンスの参照で済ませる。

現時点では ActionForm に検証コードを追加していないので、
Action は常に成功して、一覧画面に転送されることになる。



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