這是不可能的,因爲驗證在轉換後運行。您基本上需要將它綁定到String
屬性,而不是Integer
之一,以驗證未轉換的值。之後您需要在屬性設置器或託管bean操作方法中將其轉換。因此,如果您將其設置爲String
媒體資源,則可以使用<f:validateRegex>
。
<h:inputText value="#{bean.input}" validatorMessage="Please enter digits only">
<f:validateRegex pattern="\d*" />
</h:inputText>
另外,和IMO比手動轉換它在調節器或操作方法更好,你可以帶來它擴展了JSF標準IntegerConverter
自定義轉換器和轉換髮生有權利之前驗證模式。
@FacesConverter("digitsOnly")
public class DigitsOnlyConverter extends IntegerConverter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
if (!value.matches("\\d*")) {
throw new ConverterException();
}
return super.getAsObject(context, component, value);
}
}
與
<h:inputText value="#{bean.input}" converterMessage="Please enter digits only">
<f:converter converterId="digitsOnly" />
<h:inputText>