Я использую классы JPA Container with Entity для заполнения таблицы из MySQL. Два поля - поля GregorianCalendar (один - дата и один - время), и я ищу способ их форматирования/преобразования отдельно, чтобы дата отображалась как короткая дата (например, dd-MM-yyyy) и время появляется как короткое время 24h (HH: mm) в соответствии с локалью.Форматирование двух полей Entity одного и того же типа по-разному в таблице
Основываясь на результатах поиска, я понимаю, что лучший способ форматирования даты и времени, чтобы переопределить таблицу по умолчанию, так это то, что я сделал:
final Table opTable = new Table() {
private static final long serialVersionUID = 1L;
@Override
protected String formatPropertyValue(Object rowId, Object colId, Property property) {
Object v = property.getValue();
if (v instanceof GregorianCalendar) {
GregorianCalendar datez = (GregorianCalendar) v;
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.GERMANY);
String formattedDate = df.format(datez.getTime());
return formattedDate;
}
if (v instanceof GregorianCalendar) {
GregorianCalendar timeValue = (GregorianCalendar) v;
SimpleDateFormat fmt = new SimpleDateFormat("HH:mm:ss");
fmt.setCalendar(timeValue);
String timeFormatted = fmt.format(timeValue.getTime());
return timeFormatted;
}
return super.formatPropertyValue(rowId, colId, property);
}
};
и заполнение таблицы:
bookings = JPAContainerFactory.make(BookingEntity.class, CSAdminUI.PERSISTENCE_UNIT);
opTable = new Table(null, bookings); opTable.setContainerDataSource(bookings);
opTable.setVisibleColumns(new Object[] { "operator.rowid", "activity.name", "startDate", "startTime", "done", "price", "operatorCost", "paymentType", "voucherCode", "hints", "timeLeft", "succeded", "teamPicture", "comment" });
Первое условие - единственное, что применяется, видя, что оба поля являются экземплярами GregorianCalendar. Есть ли другой способ, которым я могу ссылаться на поля или по-другому, я могу выборочно отформатировать их, имея в виду, что они оба одного типа?
I подумайте, что аргумент 'Property property' содержит имя свойства, поэтому вы можете изменить поведение в имени свойства –
Я не думаю, что' Property property' содержит имя, но оно содержит фактическое значение. Это похоже на 'property.getValue()' Печать 'property.toString()' дает тот же результат, что и print' property.getValue() ' – Mimzo
. Имущество, как правило, не только значение, но и еще несколько информация. Как вы заполняете свой стол? –