Возможно, вы смешиваете валидацию с конверсией. Цель конвертера - описать, как отображаются числа, и обычно выдается ошибка преобразования, если пользователь ввел неправильный тип данных.
Вы можете использовать, например:
<h:inputText id="amount" value="#{bean.amount}">
<f:convertNumber pattern="##0.00" maxIntegerDigits="4"/>
</h:inputText>
, но это не выдает ошибку конвертации, если вы введете 4444. Конвертер преобразует ее в "444.00". Но в вашем резервном бине значение будет правильно храниться как 4444.
Вам нужен валидатор:
<h:inputText value="#{controllerBean.number}" >
<f:convertNumber pattern="##0.00" maxIntegerDigits="3"/>
<f:validateDoubleRange maximum="1000"/>
</h:inputText>