[Seasar-user:13952] Re: [Teeda]Foreach + 動的バリデーションのIndex番号の取得について

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 4月 25日 (金) 17:00:46 JST


小林 (koichik) です.

Date:    25 Apr 2008 16:02:21 +0900
From:    [E-MAIL ADDRESS DELETED]
To:      <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:13951] Re: [Teeda]Foreach + 動的バリデーションのIndex番号の取得について

> 下記の方法で試させて頂きました。
> xxxItems-1に、yyyMessageを挿入したら表示されませんでした。
> xxxItems-2に、yyyMessageのほうに挿入したら表示されるようになりました。
> 
> 同じ、Items内でしか、Messageの表示は駄目なんですね。

あう,それは失礼しました.
コンポーネントの clientId が form:xxxItems-2:0:yyy
のようになり,メッセージの方は form:xxxItems-1:0:yyy
で探しにいっちゃうせいですね...

となると,自前でメッセージを取ってきて
outputText で表示することになりますか.

HTML は

<span id="yyyMsg"></span>

のように末尾を Message 以外にして,
ページクラスで

public String getYyyMsg() {
  StringBuilder msg = new StringBuilder();
  FacesContext context = 
  for (int i = 0; i < xxxItems.size(); ++i) {
    Iterator<FacesMessage> it = context.getMessages("form:xxxItems:" + i + ":yyy");
    while (it.hasNext()) {
      String msg = it.next().getDetail();
      msg.append(msg); //必要に応じて整形
    }
  }
  return new StringBuilder(msg);
}

みたいな.
# メーラで書いただけなので怪しいかも.

FacesContext#getMessage() の引数は以下のパラメータ名と
同じになります.

http://teeda.seasar.org/ja/extension/reverse/validation.html#getValidatorメソッドの中でリクエストパラメータを参照するには




-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



Seasar-user メーリングリストの案内