カスタムタグ

Cubbyのカスタムタグはフォーム値の表示・復元・バリデーション結果の反映に使用します。 以下のタグライブラリ宣言を行うことでカスタムタグが使用できます。

<%@ taglib uri="http://www.seasar.org/cubby/tags" prefix="t" %>

Cubby のカスタムタグは、全て JSP2.0のDynamic-Attribute に対応しています。 カスタムタグに定義されていない属性はそのまま素直に出力されます。

カスタムタグ一覧

用途 タグ名 説明
入力フォーム作成 form form タグを出力します。
入力フォーム作成 input input タグを出力します。
入力フォーム作成 select select タグと option タグを出力します。
入力フォーム作成 textarea textarea タグを出力します。
2重サブミット防止 token 2重サブミットを防止します。

form

HTML の form タグを出力します。 Cubby の input/select/textarea タグで参照するフォーム用オブジェクトを指定するために使用します。

属性名 EL式の使用 必須 説明
value Object フォームオブジェクトを指定します。

使用例

<t:form value="${action}">
  ...
<t:/form>

結果

<form>
  ...
</form>

input

HTML の input タグを出力します。

属性名 EL式の使用 必須 説明
name String value 属性として出力する値を取得するプロパティ名を指定します。
この属性の値は name 属性としてそのまま出力されます。
index Integer × name 属性が同じフィールドが複数ある場合に、何番目の要素なのかを指定します。
type String text/password/checkbox/radio/hidden が指定できます。
この属性の値は type 属性としてそのまま出力されます。
value String type 属性が radio/checkbox の場合にポストされる値を指定します。この属性の値は value 属性としてそのまま出力されます。
この値と name 属性で指定したプロパティから取得した値が一致した場合には checked 属性が true になります。
type 属性が radio/checkbox の場合は必ず指定してください。
checkedValue String,配列,java.util.Collection × formを指定しない場合に、比較対象となる値を指定します。
この値と value 属性で指定したプロパティから取得した値が一致した場合には checked 属性が true になります。
フォームオブジェクトを指定しなかった場合、かならず指定してください。

使用例

<t:input name="title"/>

結果

<input name="title" value="Todo Title"/>

select

HTML の select タグと option タグを出力します。

属性名 EL式の使用 必須 説明
name String selected 属性を付加する option タグを決めるための値を取得するプロパティ名を指定します。
この属性の値は name 属性としてそのまま出力されます。
items 配列,java.util.Collection option タグの内容を表すリストを指定します。
valueProperty String items 属性で指定したリストの要素から、option タグの値として使用するプロパティ名を指定します。
labelProperty String items 属性で指定したリストの要素から、option タグの表示文字列として使用するプロパティ名を指定します。
emptyOption Boolean × 空白の option タグを出力するかどうかを指定します。
省略した場合は true と見なして先頭に空白の option タグが出力されます。
emptyOptionLabel String × 空白の option タグの表示文字列を指定します。
省略した場合は何も表示されません。 true と見なして先頭に空白の option タグが出力されます。

使用例

<t:select name="typeId" items="${todoTypes}" labelProperty="name" valueProperty="id"/>

結果

<select name="typeId">
  <option name="1">TodoType 1</option>
  <option name="2">TodoType 2</option>
</select>

textarea

HTML の textarea タグを出力します。

属性名 EL式の使用 必須 説明
name String value 属性として出力する値を取得するプロパティ名を指定します。
この属性の値は name 属性としてそのまま出力されます。
index Integer × name 属性が同じフィールドが複数ある場合に、何番目の要素なのかを指定します。

使用例

<t:textarea name="memo"/>

結果

<textarea name="memo">Memo 1</textarea>

token

2重サブミットを防止します。

属性名 EL式の使用 必須 説明
name String × input type="hidden"/ タグのname属性を指定します。通常は省略可能です。省略した場合、nameの属性名は「cubby.token」になります。

使用例

<t:form value="${action}">
  <t:token / >
<t:/form>

結果

<form>
  <input type="hidden" name="cubby.token" value="ランダムな文字列...">
</form>

アクション

public class TokenAction extends Action {
  ...
  public ValidationRules validation = new DefaultValidationRules() {
  @Override
    public void initialize() {
      add("cubby.token", new TokenValidator());
    }
  };
  ...
  @Form
  @Validation(errorPage="token.jsp", rules = "validation")
  public ActionResult message() {
    return new Forward("result.jsp");
  }
        
}