Hiddenの使い方

これが苦労した。。。
まぁいいや。とりあえず、

  deleteForm = new Form("deleteForm");
  PasswordField delPasswordText = new PasswordField("delpassword", "パスワード", true);
  deleteForm.add(delPasswordText);
  Submit deleteBtn = new Submit("deleteBtn", "delete");
  deleteForm.add(deleteBtn);
  
  HiddenField idHidden = new HiddenField("delid", String.class);
  deleteForm.add(idHidden);
  addControl(deleteForm);

といったような、deleteFromという名前のついたFormがあって、
それには、delidといった名前のついたhiddenフィールドがあります。
ここでClassはStringとしておきます。
画面では、記事の件数だけループをさせ、それぞれの
記事で、削除用のformを埋め込みますが、どこのフォームがサブミットされたのかを判断するために
hiddenでidを埋め込みたいとします。

<td>削除</td>
<td>
#set($deleteForm.fields.delid.value=""+$article.id)
$deleteForm.startTag()
#foreach ($field in $deleteForm.fieldList)
 #if (!$field.hidden)
 $field &nbsp;
 #end
#end
   #foreach ($button in $deleteForm.buttonList)
     $button &nbsp;
   #end
   
$deleteForm.endTag()
</td>

startTagはhiddenを埋め込むのでその前に値を設定してやります。
Map Form#getFields()
Field Map#get(String key)・・・delidがkey
Field#setValue(String value)
のような感じです。
ちなみにサブミットされると、次回表示ではすべての記事の削除用パスワードが
直前の入力値として表示されるので適宜クリアしてあげます。
また、入力チェックなどでひっかかった際には大惨事です。
これもひとつのフォームを使いまわしているのが問題なんだよね
こまりました・・・
こういう際にはどうしたもんでしょうか?
って考え付くのが・・・

  1. 必須はずして、フォームは毎回クリア(簡単)
  2. フォームを複数にする
    1. ArticleにFormをコンポジット(あほ)
    2. Article継承クラスを用意してFormをコンポジット(まぁプレゼン用Beanだと思えば・・・)
    3. Formのリストを用意してインデックスで記事との対応付け?
    4. FormにArticleを持たせて、そのリストを画面に返してみる
    5. ArticleとFormを持つようなオブジェクトとそのList
    6. TreeMapでがんばる

どれもよくわからんですね。
コンポジットでいくと、Listを総ざらいしてサブミットされたか?
というのを判断しなくてはいけなそうだし
そもそもそのマッピングされたFormを復元するためにはsessionかなんかを利用する必要も
出来てきそうだし・・・
よくわからんので、削除用Formはとりあえず1個でいきます。