ActionForm

Struts 1で画面入力値を受け取り、ActionとJSPの間で値を運ぶForm Bean。

作成日: 2026-07-28 / 更新日: 2026-07-28

キーワード: reset / validate / request scope / session scope / DynaActionForm / getter / setter

概要

ActionFormは、Struts 1で画面入力値を受け取るJavaBeanです。HTMLの入力項目名とプロパティを対応させ、Actionへまとめて渡します。

public class UserSearchForm extends ActionForm {
    private String userId;
    private boolean detail;

    public String getUserId() { return userId; }
    public void setUserId(String userId) { this.userId = userId; }
    public boolean isDetail() { return detail; }
    public void setDetail(boolean detail) { this.detail = detail; }
}

入力値が入る仕組み

<input type="text" name="userId">が送信されると、StrutsはsetUserId()を通して値を設定します。プロパティ名、setter、HTMLのnameが一致しているかを確認します。

requestスコープとsessionスコープ

scope寿命向いている場面注意点
request1回のリクエスト単一画面の入力と結果redirectでは値を引き継げない
sessionセッションが続く間複数画面にまたがる入力古い値、別タブ、後始末に注意

sessionスコープのFormは複数リクエストで再利用されます。初期化箇所と削除箇所を確認します。

reset()

reset()は、リクエストパラメータが設定される前にFormの状態を整えるために使います。

@Override
public void reset(ActionMapping mapping, HttpServletRequest request) {
    detail = false;
}

未チェックのcheckboxはパラメータ自体が送られません。sessionスコープでは、初期化しないと前回のtrueが残ることがあります。一方、無条件な初期化で複数画面に保持したい値を消さないよう注意します。

validate()

@Override
public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
    ActionErrors errors = new ActionErrors();
    if (userId == null || userId.isBlank()) {
        errors.add("userId", new ActionMessage("errors.required", "ユーザーID"));
    }
    return errors;
}

エラーがある場合、通常はActionを実行せず、ActionMappingのinputへ戻ります。入力形式のエラーと、ActionやServiceで判定する業務エラーは分けて考えます。

JSPとの接続

<html:text property="userId"/>

<logic:equal name="userSearchForm" property="detail" value="true">
  <p>詳細条件を表示します。</p>
</logic:equal>

Bean名は、struts-config.xml<form-bean name><action name>から特定します。

DynaActionForm

DynaActionFormでは、専用Javaクラスを作らず設定ファイルでプロパティを定義できます。Formクラスが見つからない場合はform-propertyを確認します。

調査時の確認事項

参考文献

更新履歴

  • 初版作成

関連項目

このページを参照しているページ