[Seasar-user:12650] Re: [Teeda] コンポーネント毎の Message の追加(forEach の場合)
松山 大樹
[E-MAIL ADDRESS DELETED]
2008年 1月 28日 (月) 11:39:52 JST
松山です。
コンポーネント毎にメッセージを指定する方法として、
[Seasar-user:9543] で、大谷さんが回答されていて、この方法を使っているのですが、
forEach の中のコンポーネントid は、どのように指定すればいいのでしょう?
例)
<form id="maintenanceQuestionForm">
<table>
<tbody id="answerItems">
<tr>
<td><span id="no">99</span></td>
<td><input type="text" id="hogeAnswer" /><span id="answerMessage">error</span></td>
</tr>
</tbody>
</table>
この場合、たとえば、2行目のtext だけエラーにしたいという場合です。
UIComponent findComponent = viewRoot.findComponent(
"layoutChildBody:maintenanceQuestionForm:answerItems:1:hogeAnswer");
と指定してみましたが、null が返ってきます。
teeda-core-1.0.12-rc1 です。
よろしくお願いします。
> 大谷です.
>
> こんな感じで出来ます.
>
> FacesContext context = FacesContext.getCurrentInstance();
> UIViewRoot viewRoot = context.getViewRoot();
> //formのid+該当のコンポーネントのid
> UIComponent findComponent = viewRoot.findComponent("addForm:arg1");
> FacesMessageUtil.addErrorComponentMessage(context, findComponent,
> "javax.faces.validator.LengthValidator.MAXIMUM");
>
> 今のところこのような形式でしか出来ないです.
> 取り急ぎ.
>
> 07/07/29 に Nishioka Naoto<[E-MAIL ADDRESS DELETED]> さんは書きました:
>> にしおかです。
>>
>> あまり汎用的でないため、
>> できれば独立したValidatorクラスを作らずに
>> doXXXメソッド内でチェックを行いたいのですが、
>> この場合、「指定したID+Message」として
>> エラーメッセージを出力することはできないのでしょうか?
>>
>> 画面全体としてのメッセージとして出力する場合は
>> http://ml.seasar.org/archives/seasar-user/2007-January/007567.html
>> を参照に出力できたのですが、
>> 個別のコンポーネント毎のメッセージとする場合は、
>> http://ml.seasar.org/archives/seasar-user/2007-July/011076.html
>> のようにDynamicValidatorで処理を行い、
>> 例えばインナークラスとしてValidatorを定義するといった対応しか
>> ないのでしょうか?
>> (doXXXでValidatorExceptionをスローすると、エラーページに
>> 遷移してしまいました)
>>
>> addMessage(componentName, message)
>> のようなメソッドがあれば非常にうれしいのですが。
>>
>> --------------------
>> Nishioka Naoto
>>
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
>
>
--
::: 株式会社WOWOWコミュニケーションズ http://www.wowcom.co.jp/
::: ITシステムインテグレートサービスDept.
::: Webソリューション開発Unit.
::: 松山 大樹 - [E-MAIL ADDRESS DELETED]
::: tel 045-345-0429 fax 020-4622-7043
Seasar-user メーリングリストの案内