[Seasar-user:4801] Re: アクションごとにm:requiredを切り替えたい

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2006年 10月 16日 (月) 21:28:30 JST


米林です。

From: "Junichi Kato" <[E-MAIL ADDRESS DELETED]>
Sent: Monday, October 16, 2006 9:06 PM

> お世話になります。加藤です。
>
> 以下のようなフォームで、送信ボタンを押されるとbodyを送信、画像追加ボタン
> を押されるとファイルをアップロードするアクションを考えています。
> 送信ボタンの仕様で考えると、bodyは必須なので、m:requiredはtrueなのですが、
> 画像追加ボタンの仕様でいくと、bodyが必須だと、操作がしにくいのでfalseに
> なってほしいと考えています。
> このようにアクションによっては、m:requiredをtrueにしたり、falseにしたりと
> 動的に切り替えたいのですが、入力値の検証はアクションの前に行われるのでどう
> したらよいものかと悩んでおります。
>
> 入力フィールドをすべてm:required="false"にして、action.addImage,action.submit
> の各メソッドの内部で、手動で値の検証を行い、facesContext.addMessage
> するのもありかと思いますが、入力フィールドも多いとかなり面倒なことになる
> ので避けたいと思っております。
>
> 何かよい知恵がありましたら、アドバイスをお願いいたします。
>
> <form>
>
> <textarea id="body" m:value="#{dto.body}" m:required="ここ">
> </textarea>
>
> <input type="button" value="画像追加" m:action=""#{action.addImage}"/>
> <input type="button" value="送信" m:action="#{action.submit}"/>
>
> </form>

画像追加のボタンにm:immediate="true"を指定してみてください。

<input type="button" m:immediate="true"
    value="画像追加" m:action=""#{action.addImage}"/>

immediate="true"の場合は、バリデーションフェーズが
スキップされます。




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