I have a form page that has an inputText field that accepts a date. We have a converter that converts the string from the textbox into a Date object (ie. "2011-03-01" to java.util.Date("2011-03-01"") )
If the string is not a date, like "123" then a validation error message will be displayed like "value (123) must be a date".
Currently, in my .properties file, I see:
javax.faces.converter.DateTimeConverter.DATE=value ({0}) must be a date
I need to make this error message more clear by specifying exactly which field must be a date. (As there could be more than one date text fields on the form).
I would like to change it to something like:
javax.faces.converter.DateTimeConverter.DATE=The field "{0}" with value ({1}) must be a date
However, I am unsure how JSF automatically fills in the {0} and {1}. How do I specify my own variables inside the JSF Converter error message?
Note: I have added tried creating my own validator (not to be confused with converter) but it seems that the JSF framework does conversion before validation in its lifecycle.
Starting from JSF 1.2, use the converterMessage
attribute to replace the entire message, such as:
<h:inputText value="#{user.dateOfBirth}" converterMessage="Format must be: yyyy-MM-dd">
<f:convertDateTime pattern="yyyy-MM-dd" />
</h:inputText>
Otherwise, JSF by default shows the _detail
message in the <h:message>
. Only when you use <h:message showDetail="false" showSummary="true">
then the one similar as in your question will be displayed. I'm not sure what JSF version you're using, but in my JSF 2.0.3 the default detail message for f:convertDateTime
is the following:
javax.faces.converter.DateTimeConverter.DATE_detail = {2}: ''{0}'' could not be understood as a date. Example: {1}
The {2}
will be substituted with the client ID or the label
attribute of the input field when present.
<h:inputText value="#{user.dateOfBirth}" label="Date of birth">
<f:convertDateTime pattern="yyyy-MM-dd" />
</h:inputText>
Both the DATE
and DATE_detail
message must be defined for the DATE_detail
message to be used:
javax.faces.converter.DateTimeConverter.DATE=Date format must be: dd/mm/yyyy
javax.faces.converter.DateTimeConverter.DATE_detail=Date format must be: dd/mm/yyyy
See also:
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With