2011-12-10 5 views
1

私は時間がありますのinputText要素と時間を:それのためのメッセージ:私は、ページを開いたときにJSFは時間span要素をレンダリングしない:メッセージ

<h:form id="cancelForm"> 
    <h:inputText id="days" /> 
    <h:message for="days" /> 
</h:form> 

だから、JSFは、のために、「スパン」要素をレンダリングエラーメッセージ。これで結構です。 私は、アプリケーションがJavaに行くとフィールドを検証提出押す:

// Some code 
if (error) { 
    FacesContext.getCurrentInstance().addMessage("days", new FacesMessage("Error message")); 
    return error(); 
} 

しかし、これJSFは、時間のための「スパン」レンダリングされません後:メッセージを。

なぜですか?

答えて

3

daysは、inputTextコンポーネントの単なるIDです。 addMessageコールでは、完全なID(クライアントID)が必要です。

レンダリングされたHTMLソースコードを見ることでクライアントIDを取得できます。またはFaceletのすべての親命名コンテナにIDがある場合は推測できます。通常、すべての親IDは:で連結されています。

常に100%正しいIDを取得するには、inputComponentをバッキングBeanにバインドし、上に表示されているコード・フラグメントにそのIDを問い合せます。

最後に、1つのアドバイス:通常、顔のメッセージをチェックしたり追加したりするエラーの種類は、バリデーターやコンバーターによって行われます。バッキングBeanでこれを行うのは、あなたの最初のアプローチではありません。

+0

私はIDとJava側でFacesMessage.SEREVERITY_ERRORを使ってより詳細なfacesMessageオブジェクトを作成しました。 – Daggeto

関連する問題