エラー時などにリクエストパラメータを入力欄に再表示する方法です。
とりあえずはVelocityの機能でやります。
単純なリクエストパラメータの場合
parameter.vmを編集
$の後に!を付けると変数がnullの場合は空白が出力されます。
リクエストパラメータ:$word <form action="parameter.action"> <input type="text" name="word" value="$!word" /> <input type="submit" value="実行" /> </form>
可変リクエストパラメータの場合
MultiInputFieldActionを編集
Velocityでは配列の要素に直接アクセスできないので、Action側でListの要素を取り出すメソッドを用意します。
(#foreachで配列の中身を走査することは可能です)
public Object getValue(int i) { return value.get(i); }
multiinputfield.actionを編集
getValueメソッドを使って配列の要素を取り出して表示しています。
<form action="multiinputfield.action" method="POST"> <table> <tr><th>checkbox</th><th>text</th><th>select</th></tr> #foreach ( $item in [1..3] ) #set($num = $item - 1) <tr> <td><input type="checkbox" name="value[$num].check" value="true" ) #if($action.getValue($num).check) checked #end/></td> <td><input type="text" name="value[$num].text" value="$!action.getValue($num).text"/></td> <td> <select name="value[$num].select"> <option #if($action.getValue($num).select == "A") selected #end>A</option> <option #if($action.getValue($num).select == "B") selected #end>B</option> <option #if($action.getValue($num).select == "C") selected #end>C</option> </select> </td> </tr> #end </table> <input type="submit" value="実行" /> </form>