3

jQueryを使用して検証できるようにするために、1つの入力フィールドinputtextのデフォルトのJSF検証と変換を無効にしたいと考えています。

<p:column headerText="Quantité"> 
    <p:inputText widgetVar="input_qte" styleClass="my_qte" value="#{arti.qte}">
        <f:validateBean disabled="true"/>
    </p:inputText> \
    <h:outputText styleClass="my_qtemax" value="#{arti.qtemax}" />
    <div class="my_validator" style="display : none;">Valeur Invalide</div>
</p:column>

はプロパティ#{arti.qte}にバインドされていDoubleます。

どうすればこれを達成できますか?

4

1 に答える 1

4

これまでに提供された情報を見る限り、そのコンポーネントにはまだ検証がありません。Stringおそらく、非型を入力コンポーネントの値としてバインドするときの暗黙的な変換を具体的に意味していたのでしょうか? いいえ、これを無効にすることはできません。例外をスローせず、null失敗時に戻るカスタムコンバーターを提供することによってのみ、これを回避できます。

たとえば、標準の JSF を拡張し、 onDoubleConverterを完全に抑制ConverterExceptiongetAsObject()ます。

@FacesConverter("lenientDoubleConverter")
public class LenientDoubleConverter extends DoubleConverter {

    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value) {
        try {
            return super.getAsObject(context, component, value);
        } catch (ConverterException ignore) {
            return null;
        }
    }

}

次に、次のように使用されます。

<p:inputText ... converter="lenientDoubleConverter" />

具体的な問題とは関係ありませんが、クライアント側の検証/変換はまったく信頼できないことに注意してください。JavaScript はクライアント側で完全に実行されるため、エンドユーザーは実行中のコードを完全に制御できます。つまり、エンドユーザーは簡単に無効化、バイパス、なりすましなどを行うことができます。JSF2 Validation Clientside or Serverside?も参照してください。

于 2013-04-25T01:06:41.977 に答える