我在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”标签(如果我删除它,有效)那么,为什么?
有什么建议吗?
答案 0 :(得分:1)
validateRegExp只接受字符串。如果你可以改变java类,那么添加一个String字段以遮蔽Long是一个简单的修复。如果没有,您可以编写自己的正则表达式验证器。