2011-08-03 5 views
3

I JSFに変換クラスに値を渡すためにしようとしています/ SEAMJavaのConversionクラスにパラメータ値を渡すにはどうすればよいですか?

public class ValueConverter implements Converter { 

public Object getAsObject(FacesContext arg0, UIComponent arg1, String value) { 
    if (StringUtils.isNotBlank(value)) { 
    // logic etc here. 

私のXHTMLは、次のとおりです。

<f:converter converterId="ValueConverter"> 
<f:attribute name="theMaxOrderSize" id="maxorder" value="#{_cartItem.item.maxOrderSize}"/> 
</f:converter> 

私はJavaでの変換クラスにパラメータ値を渡すにはどうすればよいですか?私は間違って始めますか?私はJSF 1.2を使用しています。

答えて

3

これは、Validatorで行うべきことです。 ConverterはStringからObjectへ、ObjectからStringへ変換するだけです。コンバーターで検証しようとしています。

javaのConversionクラスにパラメータ値を渡すにはどうすればよいですか?

これは正しくありません。パラメータをConverterに渡す必要はありません。それはする必要があります -

私はどのようにJSFでコンバータのパラメータにアクセスしますか?

あなたはのFacesContextを使用することができます -

context.getExternalContext().getRequestParameterMap(); 

私はあなたがする測定値の全体の多くを得たと思います。運が良かった!あなたは、コンバータに属性を追加したい場合は

、その後、StateHolderをを使用する -

public class ValueConverter implements Converter, StateHolder { 
6

Bheshは完全に右です。 Validatorの内部で検証ジョブを実行する必要があります。

具体的な問題に関しては、それを得るためにUIComponent#getAttributes()を使用して、入力コンポーネントに(あなたは私たちに聴いている場合や<f:validator><f:converter>の外に<f:attribute>を移動します。例えば。

Object theMaxOrderSize = component.getAttributes().get("theMaxOrderSize"); 
// ... 

componentvalidate()方法のUIComponent引数である場合、それは親の入力コンポーネントを表す)

<h:inputText ...> 
    <f:validator validatorId="valueValidator" /> 
    <f:attribute name="theMaxOrderSize" id="maxorder" value="#{_cartItem.item.maxOrderSize}"/> 
</h:inputText> 

あなたはIntegerまたは任意のオブジェクト型にキャストすることができ#{_cartItem.item.maxOrderSize}を表します。

関連する問題