2017-09-21 10 views
0

なぜこの正規表現は機能しませんか?私は値「65432」を入れたとき、私はこのf:validateRegexが機能していないようです

<p:inputText id="test" validatorMessage="error message"> 
    <p:ajax event="change" update="msg test" /> 
    <f:validateRegex pattern="[0-9]{1,7}" /> 
</p:inputText> 

上クレイジーつもりです私は実際にこの正規表現(\d\d{0,2})(((,\d{3}){0,2})|(\d{0,6}))(USD)?を使用することを意図しvalidatorMessage

に設定されたメッセージが表示されます。しかし、私も作ることができないのです私は私の答えを見つけることができた:最初の1つの作業


EDIT。私はwrongfuly私のコードサンプルからコンバータの属性を削除しました。詳細については、この投稿への回答を参照してください。

+0

エラーメッセージは何ですか?正規表現は、あなたが望むロジックだとすれば、私には見えます。 –

+0

コンソールからのエラーメッセージではありません。私は 'validatorMessage'で設定したメッセージを取得します。 投稿を編集しましたが、わかりません。 – Sirmyself

+0

@Sirmyself jsf regexパーサーに関連している可能性があります。 '[0-9] +'や '[0-9] [0-9]?[0-9]?[0-9]?[0-9]?[0-9]のような他の正規表現を使ってみてください。 ?[0-9]? '、または実際には2桁の' [0-9] [0-9] 'で試してみてください。この作品のいずれかがあれば、おそらくキャッシュの問題があると思いますか? –

答えて

0

私は自分の答えを見つけることができました。私はwrongfuly私のコードサンプルからコンバータの属性を削除しました。

<p:inputText id="test" validatorMessage="error message" converter="someConverter"> 
    <p:ajax event="change" update="msg test" /> 
    <f:validateRegex pattern="[0-9]{1,7}" /> 
</p:inputText> 

JSFは私が思ったようにコンバータに入る前に正規表現を検証していないことが判明しました。私のコンバータはカンマを削除し、文字列の値をLongオブジェクトに入れました。 JSFはLongオブジェクトと正規表現を比較しようとしていましたが、もちろん無効な答えが返ってきました。

関連する問題