このアーカイブは同期化されません。 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 は常に成功して、一覧画面に転送されることになる。