【Struts2】Strutsタグ

action(actionクラスを実行)

action名はStruts.xmlに紐づく
実行するクラス、メソッドはStruts.xmlに記載する

    <s:form action="init">
        名前:<s:textfield name="name" />
        <s:submit value="確定" />
    </s:form>

Struts.xml

<action name="init" class="sample.InitAction" method="execute">

set(変数を使用)

var:変数名、value:値
#変数名で使用

    <s:set var="age" value="33" />
    年齢:<s:property value="#age" />

<%-- メソッドの実行結果を格納 --%>
    <s:set var="val" value="getVal('aaa')" />
    val:<s:property value="#val" />

if(条件分岐)

    <s:if test="val=='aaa'">
        文字列
    </s:if>
    <s:elseif test="val==111">
        数値
    </s:elseif>
    <s:elseif test="flg1 && !flg2">
        boolean
    </s:elseif>
    <s:elseif test="%{val=='eee'}">
        この書き方でも可
    </s:elseif>
    <s:else>
        その他
    </s:else>

<%-- メソッドの実行結果を判定 --%>
    <s:if test="isFlg('aaa')">
        名前:<s:property value="name" />
    </s:if>

hidden(非表示項目)

    <s:form action="init">
        <s:hidden name="hiddenItem" value="非表示の値"/>
        <s:submit value="確定" />
    </s:form>

actionクラスのgetter/setterを用意すると使用可能

    private String hiddenItem;

    public String getHiddenItem() {
        return hiddenItem;
    }
    public void setHiddenItem(String hiddenItem) {
        this.hiddenItem = hiddenItem;
    }

iterator

繰返し。foreachのようなもの
例はhogeListにname,age,sex,updateDateが定義されたモデルクラスのリストを表示

<s:iterator status="st" value="hogeList">
    <s:textfield name="name"/>
    <s:textfield name="age"/>
    <s:textfield name="sex"/>
    <s:property value="updateDate"/>
    <s:hidden name="tagId"/>
</s:iterator>

回数分繰返す方法

<%-- 10回繰り返す --%>
<s:iterator value="(10).{#this}" status="st">
<tr>
<%-- タグ外はEL式でないとstの値を表示できない --%>
  <th title="カスタム項目${st.count}">カスタム項目${st.count}</th>
  <td>
<%-- nameにはOGNL式でないとエラー? --%>
  <s:textfield name="userForm.customItem%{#st.count}" size="70"/>
  </td>
</tr>
</s:iterator>

カンマ区切りで表示(最初だけカンマスキップ)

<s:iterator value="paymentInfoList.offerPaymentMethodDisp" status="status">
    <s:if test="#status.first == false">、</s:if><s:property />
</s:iterator>

statusのメソッド
例:st.count

value valueの値を返す
index 0からのカウントを返す
count 1からのカウントを返す
odd 奇数行ならtureを返す
even 偶数行ならtrueを返す
first 最初のループならtrueを返す
last 最後のループならtrueを返す
modulus(n) countをnで割った余りを返す