Selon le commentaire sur la question:
@BalusC Je suis d'accord avec ce que vous avez dit, il vaut mieux pour formater dans l'interface utilisateur. J'ai donc ajouté ce qui suit dans ma page jsf.
<p:inputText value="#{vacationschedule.convertTime(vacationschedule.selectedRow.startDate)}">
et convertTime
méthode managedBean est
public String convertTime(Date time){
Date date = new Date();
Format format = new SimpleDateFormat("yyyy MM dd");
return format.format(date);
}
<p:inputText>
est montrant correctement si je voudrais utiliser <p:calendar>
alors je reçois erreur
GRAVES: java.lang.IllegalArgumentException : Impossible de formater l'objet donné en tant que date
Vous cherchez la solution dans la mauvaise direction. La mise en forme ciblée sur l'humain doit être effectuée du côté View (UI), pas du côté du modèle, et encore moins du côté du contrôleur.
Pour présenter un objet Date
dans un modèle convivial humain dans un composant JSF, vous devriez utiliser étiquette <f:convertDateTime>
fournie par ensemble standard de composants JSF:
<p:inputText value="#{vacationschedule.selectedRow.startDate}">
<f:convertDateTime pattern="yyyy MM dd" />
</p:inputText>
De cette façon, vous pouvez garder la propriété juste Date
tous les temps. De cette façon, vous pourrez également enregistrer la valeur éditée (ce qui ne serait pas possible avec votre tentative initiale!).
Quant aux composants de <p:calendar>
PrimeFaces, il a un attribut pattern
exactement à cet effet:
<p:calendar value="#{vacationschedule.selectedRow.startDate}" pattern="yyyy MM dd" />
Téléchargez et consultez le PrimeFaces Users Guide pour se renseigner sur tous les attributs disponibles.
Il suffit d'utiliser le 'parse()'. Cependant, je ne vois pas comment cela serait utile. Vous finiriez probablement avec le même objet 'Date' que vous avez commencé. Si vous avez l'intention de le formater pour la représentation humaine dans certaines interfaces, il vous suffit de le formater exactement au moment où vous allez le présenter aux humains. – BalusC
Espérons que cela vous aide: http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html#parse(java.lang.String, java.text.ParsePosition) –
Pourquoi ne pas étendre Date et juste utiliser votre propre méthode toString? –