Как привязать дату к полосам, используя определенный формат?ММ/дд/гггг ЧЧ:мм:сс
Вопрос
Как привязать дату к полосы используя определенный формат?"ММ/дд/гггг ЧЧ:мм:сс"
<s:text name="myDateTime" formatPattern="MM/dd/yyyy HH:mm:ss" />
Решение
Полосы использует Преобразователи типов для преобразования параметров запроса (строки) в определенные типы.Javadoc для конвертера типов даты по умолчанию можно найти здесь:
net.sourceforge.stripes.validation.DateTypeConverter
Чтобы изменить форматы по умолчанию, говорится:
Этот набор форматов по умолчанию можно изменить, предоставив другой набор строк формата в пакете ресурсов Stripes или путем создания подкласса и переопределения getFormatStrings().Во всех случаях шаблоны следует указывать с использованием одиночных пробелов в качестве разделителей вместо косых черт, тире или других символов.
И:
Ключи, используемые в пакете ресурсов для указания строк формата и шаблона предварительной обработки:полосы.dateTypeConverter.formatStrings и полосы.dateTypeConverter.preProcessPattern
Если вас это не устраивает, вы всегда можете использовать свой собственный ТипКонвертер.Этот преобразователь пользовательского типа затем может быть привязан к установщику в ActionBean к:
@Validate(converter=YourCustomTypeConverter.class)
public void setDate(Date date) {
this.date = date;
}
Если вы хотите, чтобы сопоставление выполнялось автоматически, вам нужно либо переопределить сопоставитель по умолчанию, либо создать другой (под) тип.Например, вы создаете собственный преобразователь типов не для java.util.Date, а для своего собственного типа, который наследуется от java.util.Date.Поскольку это всего лишь подтип без какого-либо дополнительного поведения, остальная часть приложения может использовать его как java.util.Date.
Date date;
// No @validate needed, maps to MyCustomDate
public void setDate(MyCustomDate date) {
this.date = date;
}
Другие советы
<fmt:formatDate timeZone="${timeZone}" value="${date}" pattern="MM/dd/yyyy hh:mm a"/>
SimpleDateFormat. сможет вам помочь.