0

我在 WebCenter 环境中有一个 portlet 应用程序。这个应用程序是使用 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 类,那么添加一个 String 字段来隐藏 Long 是一个简单的修复。如果没有,您可以编写自己的正则表达式验证器。

于 2012-04-19T11:58:51.317 回答