Comment pouvez-vous lier à une date en bandes en utilisant un format spécifique? MM / jj / aaaa HH: mm: ss
La solution
Stripes utilise Typeconverters pour convertir des paramètres de demande (chaînes) à des types de spécifiques. Le javadoc pour le convertisseur par défaut de type date se trouve ici:
net.sourceforge.stripes.validation .DateTypeConverter
Pour modifier les formats par défaut il est écrit:
Cet ensemble par défaut des formats peuvent être modifiés en fournissant un ensemble différent de chaînes de format dans le faisceau de ressources Stripes, ou par sous classage et en remplaçant getFormatStrings (). Dans tous les cas les modèles doivent être spécifiés à l'aide des espaces simples comme séparateurs au lieu de barres obliques, des tirets ou autres caractères.
Les clés utilisées dans le faisceau de ressources pour spécifier les chaînes de format et le modèle pré-processus sont: stripes.dateTypeConverter.formatStrings et stripes.dateTypeConverter.preProcessPattern
Si cela ne le faites pas pour vous, vous pouvez toujours vous rouler propre êtes la TypeConverter . Ce convertisseur de type personnalisé peut alors être lié à un setter dans le ActionBean par:
@Validate(converter=YourCustomTypeConverter.class)
public void setDate(Date date) {
this.date = date;
}
Si vous voulez laisser le mappage être fait automatiquement vous soit nécessaire de remplacer le mappeur par défaut ou créer un autre type (sous). Par exemple, vous créez votre propre convertisseur de type non pour java.util.Date mais pour votre propre type personnalisé qui hérite de java.util.Date. Comme il est juste un sous-type sans comportement supplémentaire, le reste de l'application peut utiliser comme java.util.Date.
Date date;
// No @validate needed, maps to MyCustomDate
public void setDate(MyCustomDate date) {
this.date = date;
}
Autres conseils
<fmt:formatDate timeZone="${timeZone}" value="${date}" pattern="MM/dd/yyyy hh:mm a"/>
SimpleDateFormat sera en mesure de vous aider.