Use a FacesConverter
Proof of concept:
@Named
public class DateStringConverter implements Converter {
    @Override
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
        SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd");
        try {
            return parser.parse(arg2);
        } catch (ParseException e) {
            e.printStackTrace();
            return null;
        }
    }
    @Override
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
        return arg2.toString();
    }
}
xhthml
<p:calendar value="#{dateAsString}" pattern="yyyy-MM-dd" converter="#{dateStringConverter}" />