1

JSF(シームのxhtmlファイル)でvalidateLengthを呼び出そうとしています

<f:validateLength minimum="2" maximum="512"/>

テキスト長 513 や 1 などの値で機能します (つまり、警告を表示しますが、0 では機能しません)。

使用されている入力テキスト フィールドは、required=false に設定されています (空のフィールドに対して a4j サポートを使用できるように、入力に基づいてプレビューを表示する必要があります)。

私が見ている問題は、ヘルパー クラスにバリデータ メソッドがありますが、入力の長さが 0 の場合は無視されることです (つまり、何も入れず、空でない値に対して機能します)。

ここにも NullableStringConverter がありますが、そのコンバーターが空の文字列の null の値を設定するとすぐに、バリデーターがスキップされることに気付きました。これはinputTextの完全なスニペットです

<h:inputText id="linkNameInput" 
    value="#{someHelper.name}"
    validator="#{someHelper.validateMethod}"
    required="false">
      <f:validateLength minimum="2" maximum="512"/>
      <f:converter  converterId="NullableStringConverter" />
</h:inputText>

バリデーターで空の文字列を検証する機能が欲しいだけです。

4

2 に答える 2

1

バリデーターで空の文字列を検証する機能が欲しいだけです。

これは JSF 1.x では不可能です。これは、JSF 2.0 以降でのみ可能です (JSR303 Bean Validation サポートを支持して)。

カスタム バリデータで空の文字列を検証する理由がわかりません。通常、これにはrequired="true"属性を使用します。唯一の目的が必要なメッセージを変更することである場合は、requiredMessage属性を使用してください。

<h:inputText ... required="true" requiredMessage="Please enter name" />
于 2012-10-23T10:56:24.040 に答える
0

As mentioned already, validating an empty input String in a JSF 1.2 component is not supported. However, you can check for this null/empty model value in your backing bean on form submit and add a FacesMessage that is mapped to that specific input field. This would allow integration with server-side component-specific error message display (<h:message for="componentId" />).

FacesContext.getCurrentInstance().addMessage("componentId",
                                             facesMessageForComponent);
于 2012-12-10T01:46:12.457 に答える