2012-03-05 9 views
0

コンバータとバリデーターに問題があります。JSF2が変換され、同じ入力で必要です

私はCSVリストを取る入力テキストを持っています。私はそれを文字列のリストに変換するコンバータを持っています。これはすべて正常に動作します。私はフィールドを必要としたいですが。しかし、コンバータでは、入力に必要な属性だけでなく、私が付随するバリデータを無視するようです。

これを解決するために、値が空白の場合はコンバータExceptionをスローします。これはほとんど機能しますが、私は即時= trueの形式でラジオグループの直上にあるので、もっと複雑になります。イミディエイトはまだコンバーターをスキップしますが、まだコンバーターを試しているようです。私が考えることができる次善策は、自分の行動を検証し、手動でfacesメッセージを追加することです。しかし、クライアントIDをJavaクラスにハードコードする必要があるので、避けてください。

これを正しく行うにはどうすればよいですか?

答えて

1

より前にコンバータが呼び出されます。

提出された値がnullまたは空文字列の場合、コンバーターの内部でnullを返すだけで済みます。

@Override 
public String getAsObject(FacesContext context, UIComponent component, Object value) { 
    if (value == null || ((String) value).isEmpty()) { 
     return null; 
    } 

    // ... 
} 

値がnullまたは空の場合、コンバーター例外をスローしないでください。このようにしてバリデーターは起動されません。コンバータはすべて値を検証しないと、値を変換するだけでなければなりません。

関連する問題