0

私はプライムフェイスとJSFを使用しています。オプションの住所フィールドがあります。ユーザーがいずれかのフィールド (zip や名前など) に入力すると、他のすべてのフィールドが必須になります。この検証を行う最善の方法は何ですか。

4

1 に答える 1

1

postValidate イベントを追加して、次のように複数のフィールドを検証できます。

<f:event listener="#{bean.validationMethod}" type="postValidate" />
<h:panelGroup id="xyz" rendered="#{facesContext.validationFailed}">
  <h:message for="myform"/>
</h:panelGroup>

<h:panelGroup id="myform">
 .......
<h:panelGroup>

これはモデルの更新前に起動し、別のコンポーネントの新しい値を取得できます

FacesContext fc = FacesContext.getCurrentInstance(); 
UIComponent components = event.getComponent();
UIInput param1 = (UIInput) components.findComponent("param1");
UIInput param2 = (UIInput) components.findComponent("param2");

検証が失敗した場合は、F を呼び出してacesContext.getCurrentInstance().validationFailed()myform のメッセージを追加します。

カスタム検証を使用しておらず、特定の入力が入力されたときに他の入力が追加されることを確認したいだけの場合は、Omnifaces validateAllOrNoneを使用することをお勧めします。

http://showcase.omnifaces.org/validators/validateAllOrNone

于 2013-03-29T17:33:01.180 に答える