0

Tomcat と Glassfish の間の JSF 検証で奇妙な動作と思われる現象が発生しています。以前は Tomcat を使用していましたが、現在は完全な Java EE アプリケーション サーバーを実行する必要があります。

テスト中に、空のフィールドをサーバーに送信すると、長さバリデータのみがあり、必須属性がないことに気付きました。Glassfish は検証メッセージを出力していますが、Tomcat はこれらの要素の検証を単純にスキップします。

値が送信され、検証に失敗した場合、すべて正常に機能します。値が入力されず、ページが送信されたときです。

環境仕様

  • JSF モハラ 2.1.12
  • リッチフェイス 4.1
  • 対象サーバー Glassfis 3.1.2
  • Tomcat 7.0.27 からの移行

説明されている動作を含むコードのスニペットを次に示します。

<h:inputText id="phoneAreaCode"
             maxlength="3"
             size="2"
             value="#{bean.phoneArea}"
             style="margin-left: 8px;">
    <f:validateLength minimum="3"/>
    <f:validator validatorId="phoneValidator"/>
    <a4j:ajax/>
</h:inputText>

ユースケース (Tomcat):

  1. 値が指定されている場合、検証が行われます。値が検証に合格した場合、ページは送信を許可され、失敗した場合はページにエラー メッセージが出力されます。

  2. 値が指定されていない場合、検証は行われず、ページの送信が許可されます

ユースケース (Glassfish):

  1. 同上

  2. 値が指定されていない場合でも検証が行われ、明らかに失敗します。

<f:validator/>タグを介したカスタムバリデータや、のような組み込みバリデータでこの動作が見られ<f:validateLength/>ます。

コードの違いはありません。コードが実行されているサーバーだけです。私はGoogleを検索しましたが、実際に役立つものは何も見つかりません. 検証について何か理解していませんか? 何かおかしくないですか?

このStackoverflow の質問は同じ問題のように聞こえますが、環境がこのように動作するのを防ぐための解決策や、フィールドが不要な場合に検証を無効にする方法がわかりません。

これについて私を助けてくれた人に感謝します。

4

1 に答える 1

1

私は数日前に非常によく似た問題を抱えていました.phoneAreaプロパティはIntegerまたはLongである可能性があります. もしそうなら、あなたはこのトピックを見て、さらにこれを見てください。

于 2012-10-01T19:46:51.390 に答える