I use SimpleDateFormat
to format a String from a h:inputText
field to Date
type for an advanced search method.
I tried
if(dateFrom != null && !dateFrom.isEmpty()){
predicates.add(cb.equal(tt.get(Bean_.dateFrom),
cb.parameter(Date.class, "dateFrom")));
}
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
if(dateFrom != null && !dateFrom.isEmpty()){
query.setParameter("dateFrom", formatter.parse(dateFrom));
}
And
SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy");
Date d = formatter.parse(dateFrom);
formatter.applyPattern("dd-MM-yyyy");
if(dateFrom != null && !dateFrom.isEmpty()){
query.setParameter("dateFrom", formatter.format(d));
}
And other patterns like "yyyy/MM/dd", "MM/dd/yyyy" and "MM-dd-yyyy"
For input field I use p:calendar and I use the same pattern to input date there too. I get the following exception: When I enter 24-02-2014 in the input text.
java.text.ParseException: Unparseable date: "Mon Feb 24 03:00:00 AST 2014"
I looked at all SO quetions regarding this exception and SimpleDateFormat errors but none of them were like mine. It is so weird.
Update
p:calendar:
<p:calendar value="#{beanController.dateFrom}" id="dateFrom" styleClass="dateTimeField" pattern="dd-MM-yyyy">
<p:watermark value="From DD-MM-YYYY" for="dateFrom"/>
<f:param name="dateFrom" value="#{beanController.dateFrom}"/>
</p:calendar>