package org.msh.utils.date; import org.jboss.seam.annotations.Name; import org.jboss.seam.annotations.intercept.BypassInterceptors; import org.jboss.seam.international.LocaleSelector; import org.jboss.seam.international.Messages; import javax.faces.component.UIComponent; import javax.faces.component.UIParameter; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Locale; @Name("localeDateConverter") @BypassInterceptors @org.jboss.seam.annotations.faces.Converter(id="localeDateConverter") public class LocaleDateConverter implements Converter{ public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) { return null; } public String getAsString(FacesContext facesContext, UIComponent comp, Object obj) { UIParameter aux = (UIParameter)comp.findComponent("type"); boolean includeTime = ((aux != null) && (aux.getValue().toString().equals("date-time"))); return getDisplayDate((Date)obj, includeTime); } /** * Return a string representation of a date ready for displaying * @param dt * @return */ static public String getDisplayDate(Date dt, boolean includeTime) { String patt = Messages.instance().get("locale.outputDatePattern"); if (includeTime) patt += " HH:mm:ss"; Locale locale = LocaleSelector.instance().getLocale(); SimpleDateFormat df = new SimpleDateFormat(patt, locale); return df.format(dt); } }