I am doing JSF form validation precisely in the manner described in the Seam documentation, and things are working just fine for all but one case where I am using a custom converter.
Here is the Facelet snippet:
<s:decorate id="paymentDecoration" template="../templates/fieldValidation.jspx">
<ui:define name="labelText">Amount</ui:define>
<ui:define name="formField">
<h:inputText value="#{payment.amount}"
id="amountBox"
required="true"
tabindex="1" accesskey="N">
<a4j:support event="onblur" reRender="paymentDecoration" bypassUpdates="true"/>
</h:inputText>
</ui:define>
</s:decorate>
Here is the Hibernate Validator annotation on the entity:
@Column(name = "AMOUNT", nullable = true)
@Digits(integerDigits = 10, fractionalDigits = 2, message = "#{messages['currency.invalid.format']}")
public BigDecimal getAmount() {
return amount;
}
Finally, I wrote a custom converter to BigDecimal:
@Name("bigDecimalConverter")
@Converter(forClass = BigDecimal.class)
public class BigDecimalConverter extends NumberConverter {
.
.
.
}
The problem is that the converter does its work before the @Digits validation takes hold, so my converter throws a ParseException when I pass in bad values like g.
I would appreciate any insight into how to approach this scenario.
Thanks.