public class UIInputDate extends UIInput { public static final String COMPONENT_FAMILY = "to.msn.wings.jsf.custom.input"; public static final String COMPONENT_TYPE = "to.wings.msn.jsf.custom.UIInputDate"; public String getFamily() { return COMPONENT_FAMILY; } public void restoreState(FacesContext context, Object state) { Object[] objValues = (Object[])state; super.restoreState( context, objValues[0] ); } public Object saveState(FacesContext context) { Object objValues[] = new Object[1]; objValues[0] = super.saveState(context); return objValues; } protected Object getConvertedValue(FacesContext context,Object submittedValue) { Map submittedMap = (Map)submittedValue; String year = (String)submittedMap.get ( InputDateRenderer.YEAR_SUFFIX ); String month = (String)submittedMap.get ( InputDateRenderer.MONTH_SUFFIX ); String day = (String)submittedMap.get ( InputDateRenderer.DAY_SUFFIX ); Calendar cal = Calendar.getInstance ( context.getViewRoot().getLocale() ); cal.clear(); try { cal.set(Integer.parseInt(year) , Integer.parseInt(month) - 1 , Integer.parseInt(day )); } catch (Exception e) { FacesMessage facesMessage = new FacesMessage ( "正しい日付を入力して下さい。" ); context.addMessage(getClientId(context), facesMessage); setValid(false); return submittedValue; } return cal; } }