2012-01-06 3 views
0

フィールドにテキストが入力されると、ajaxビヘイビアイベントがすぐに発生しないという問題が発生しています。JSF 2 ajaxビヘイビアイベントリスナーが日付に発生しない

フィールドが文字列であれば問題はありませんが、私は日付を使用しています。

XHTML:

<h:outputLabel value="Date of Birth:" /> 
<h:inputText id="searchDOB" value="#{search.dob}" required="true"> 
    <f:ajax event="keyup" listener="#{search.addHyphensToDOB}" render=":output" /> 
    <f:convertDateTime pattern="dd-MMM-yyyy" /> 

豆:

22-JAN-

Date dob; 

public void addHyphensToDOB(AjaxBehaviorEvent abe) { 
    System.out.println("addHyphen"); 
} 

イベントのみ次のように入力した後に解雇されます

2番目のハイフンの後に任意の数字が点火されますが、前には点滅しません。

Date型をStringに変更し、コンバーターを使用せずに書式設定することができますが、Date型を保持したいと考えています。

何か提案ありがとうございます。変換エラーが原因無効な日付フォーマットに発生したため

のEclipse 3.7、Tomcatの7、jsf2.1、

答えて

1

それは解雇ではないです。送信された値は、Bean Listenerメソッドがヒットする前に毎回変換されます。 <h:message>/<h:messages>を追加し、そのIDを<f:ajax render>に含めます。あなたはそれを見るでしょう。パターンdd-MMM-yyyyで解析されたとき、例えば2ための

String値が極端に有効Dateオブジェクトを表すことができます。

このように機能要件を達成するには、実際にはStringにする必要があります。まったく別の方法として、JSF ajaxリクエストを送信せずに、JavaScript側で完全に行うこともできます。

+0

私はクライアント側の検証が最善だと思います。ご協力いただきありがとうございます。 – wwhite

+0

ああ、それは検証のためだけですか?また、キーアップの代わりに、変更またはぼかしでそれを実行することもできます。 – BalusC

+0

私は 'onkeyup =" addHyphens() "'を使用しました。ありがとう。 – wwhite

関連する問題