action(actionクラスを実行)
action名はStruts.xmlに紐づく
実行するクラス、メソッドはStruts.xmlに記載する
<s:form action="init"> 名前:<s:textfield name="name" /> <s:submit value="確定" /> </s:form>
<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で割った余りを返す |