 |
public class InputDateRenderer extends Renderer {
public static final String RENDERER_TYPE = "to.wings.msn.jsf.custom.InputDateRenderer";
public static final String YEAR_SUFFIX = ".year";
public static final String MONTH_SUFFIX = ".month";
public static final String DAY_SUFFIX = ".day";
public void encodeEnd(FacesContext context, UIComponent uiComponent)
throws IOException {
if ( context == null || uiComponent == null ){
throw new NullPointerException();
}
UIInputeDate inputDate = (UIInputeDate)uiComponent;
Calendar calVal = (Calendar)inputDate.getValue();
ResponseWriter writer = context.getResponseWriter();
String clientId = inputDate.getClientId( context );
Map submittedValue = (Map)((UIInput)uiComponent).getSubmittedValue();
String year = "";
String month = "";
String day = "";
if ( submittedValue != null ){
year = (String)submittedValue.get( YEAR_SUFFIX );
month = (String)submittedValue.get( MONTH_SUFFIX );
day = (String)submittedValue.get( DAY_SUFFIX );
}
writeInputText( writer , clientId + YEAR_SUFFIX , 4 , 4 , year );
writer.write( "年" );
writeInputText( writer , clientId + MONTH_SUFFIX , 2 , 2 , month );
writer.write( "月" );
writeInputText( writer , clientId + DAY_SUFFIX , 2 , 2 , day );
writer.write( "日" );
}
private void writeInputText(ResponseWriter writer , String name,int maxLength,int size,String value)
throws IOException{
writer.startElement( "input" , null );
writer.writeAttribute( "type" , "text" , null );
writer.writeAttribute( "name" , name , null );
writer.writeAttribute( "size" , String.valueOf(size) , null );
writer.writeAttribute( "maxlength" , String.valueOf(maxLength) , null );
writer.writeAttribute( "value" , value , null );
writer.endElement("input");
}
public void decode(FacesContext context, UIComponent uiComponent) {
super.decode(context, uiComponent);
UIInputeDate inputDate = (UIInputeDate)uiComponent;
Map requestMap = context.getExternalContext().getRequestParameterMap();
String clientId = uiComponent.getClientId( context );
String year = (String)requestMap.get( clientId + YEAR_SUFFIX );
String month = (String)requestMap.get( clientId + MONTH_SUFFIX );
String day = (String)requestMap.get( clientId + DAY_SUFFIX );
Map submitMap = new HashMap();
submitMap.put( YEAR_SUFFIX , year );
submitMap.put( MONTH_SUFFIX , month );
submitMap.put( DAY_SUFFIX , day );
( (UIInput)uiComponent ).setSubmittedValue( submitMap );
}
}
|
 |