0

WebCenter環境にポートレットアプリケーションがあります。このアプリケーションはJSF(ADF実装付き)を使用して作成されているため、次のようなフィールドがあります。

<af:inputText visible="#{CadastrarFormularioContato.showCodigoEc}"
                        label="#{msg.CODIGODOEC}" id="it2" required="true"
                        requiredMessageDetail="#{msg.INFORMECODIGOEC}"
                        showRequired="true"
                        value="#{CadastrarFormularioContato.item.cdEstabelecimento}">                        
                        <af:validateRegExp messageDetailNoMatch="#{msg.CODIGOECSOMENTENUMEROS}" pattern="^[0-9]{1,}$"/>              
                        <af:convertNumber type="number"/>
                        </af:inputText>

しかし、フォーム送信を呼び出すと、次のエラーが表示されます。

javax.portlet.faces.BridgeException: java.lang.IllegalArgumentException: 'value' is not of type java.lang.String.

私のObject.longFieldは次のとおりです。

private Long longField

(ゲッター/セッター付き)

convert、convertNumberなどを使用しようとしましたが、成功しませんでした。

問題は「validateRegExp」タグに関するものです(削除すると機能します)では、なぜですか?

なにか提案を?

4

1 に答える 1

1

validateRegExpは文字列のみを受け入れます。Javaクラスを変更できる場合は、文字列フィールドを追加してLongをシャドウイングするのは簡単な修正です。そうでない場合は、独自の正規表現バリデーターを作成できます。

于 2012-04-19T11:58:51.317 に答える