Hello, a few days ago someone requested some advice on how to format the date within an IColumn, I suggested DateColumn that depended on his code, but I've been having this necessity in several ocassions too, so I've come up with a true reusable DateColumn component that inherits from PropertyColumn, so using it is as simple as:

(DateColumn class shown below)

List<IColumn> cols = new ArrayList<IColumn>();
cols.add(new DateColumn(new Model("header title"), "propertyExpression"));

No extra code needed, regards.
Edgar Merino


import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;

import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
import org.apache.wicket.util.lang.PropertyResolver;
import org.apache.wicket.extensions.markup.html.repeater.data.table.PropertyColumn;

/**
* PropertyColumn descendent, used to apply a format to a Date field to be displayed
* by a Label in a DataTable
*
* @author Edgar Merino
*/
public class DateColumn extends PropertyColumn { public static final String DEFAULT_DATE_PATTERN = "dd MMM yyyy '@' hh:mm a"; private String datePattern; public DateColumn(IModel displayModel, String propertyExpression) {
       this(displayModel, DEFAULT_DATE_PATTERN, propertyExpression);
} public DateColumn(IModel displayModel, String datePattern, String propertyExpression) {
       this(displayModel, null, datePattern, propertyExpression);
   }
public DateColumn(IModel displayModel, String sortProperty, String datePattern, String propertyExpression) { super(displayModel, propertyExpression); this.datePattern = datePattern;
   }

   @Override
   protected IModel createLabelModel(IModel itemModel) {
Date date = (Date) PropertyResolver.getValue(getPropertyExpression(), itemModel.getObject()); SimpleDateFormat df = (SimpleDateFormat) DateFormat.getDateInstance();
       df.applyPattern(datePattern);
return new Model(df.format(date));
   }
}


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to