2012-03-08 29 views
6

読み込み専用のjsf入力テキストを検証する方法はありますか?他のいくつかのイベントが発生すると値が変更されますか?jsf(richfaces)readonly入力テキストの入力

+2

jsfページバッキングビーンでそれを検証するのは簡単ではありませんか? – Richie

+0

また、検証をトリガーして検証メッセージを発行するにはどうすればよいですか? –

+0

コメントに返信として回答を追加しました。歓声 – Richie

答えて

2

回避策を使用してこの問題を解決しました。私は、インターフェイスには表示されませんrequired属性trueを持ってinputHiddenフィールドを追加したが、検証されます。

<h:inputHidden value="#{bean.value}" required="true" 
        requiredMessage="Data must be entered" /> 

がbean.valueの値が他のイベントによって変更され、上のいくつかの再レンダリングでinputHidden、検証が行われます。

1

イベントから直接検証ロジックを手動で呼び出す必要があります。ここに、IBMのライフサイクルライフサイクルのモデルがあります。

enter image description here

あなたはプロセス検証フェーズは、イベントが一般的に扱われる起動アプリケーションフェーズの前に発生していることがわかります。これは、検証が自動的には行われないので、うまくいきます。

2

コメントからの回答:「JSFページのバッキングBeanで、それを検証することが容易にWoudn't?」 ボタンクリックまたは同様のイベントでアプリケーションレベルの検証を行うことができます。バッキングビーンでこのようなことを行い、それをイベントにリンクすることができます。

public String login(){ 
     FacesContext context = FacesContext.getCurrentInstance(); 
     if(**<<some validation for value in field 'firstName' in form 'userForm'>>**){ 
      FacesMessage message = new FacesMessage(); 
      message.setSeverity(FacesMessage.SEVERITY_ERROR); 
      message.setSummary("Some Valication check"); 
      message.setSummary("Some Valication check!!"); 
      context.addMessage("userForm:firstName", message);//adds validation message for field firstName in form userForm 
      return "ERROR"; 
     } 
     return "SUCCESS"; 
    } 

希望はこれです。

+0

JSFは 'readonly =" true "'入力のモデル値を更新しません。加えて、通常のバリデータの内部ではなく、アクションメソッド内でvaldationを実行することは、貧弱な方法です。 – BalusC

+0

@BalusCインフォメーションありがとうございました:)入力用にreadonly = "true"を設定すると、モデル値が更新されないことはわかりませんでした。アクションの中で妥当性検査を行うのは、それがベストプラクティスではないことを知っていますが、私たちは読み取り専用入力のために通常のバリデーターを追加できないかもしれないと思います。 – Richie

12

は時の応答の位相をレンダリングtruereadonly属性を設定します。このようにして、レンダリング応答フェーズ以外のすべてのフェーズで読み取り専用とは見なされません。

<h:inputText ... readonly="#{facesContext.currentPhaseId.ordinal eq 6}" /> 
+2

私の場合、#{facesContext.renderResponse}はHTMLを描画するときにfalseを返します(途中で印刷した場合)。とにかく、それは '#{facesContext.currentPhaseId.ordinal eq 6}'として動作します。 Mojarra 2.1.9。 – SJuan76

関連する問題