2010-07-22 6 views

Répondre

-1

Je pense que ce doit être comme ceci:

StringToDate std = new StringToDate(); 
std.setPattern("dd.MM.yyyy"); 
4

Désolé pour le poste en retard, mais voici ce que vous avez à faire. Spring Webflow fait une liaison de données personnalisée. C'est similaire à Spring MVC. La différence est cependant où il le gère. Spring MVC le gère au niveau du contrôleur (en utilisant le @InitBinder).

Spring webflow le fait au niveau de la liaison. Avant d'exécuter un flux Web de transition, vous liez toutes les valeurs de paramètres à l'objet puis validez le formulaire (si validate = "true") puis invoque la transition sur une validation réussie.

Ce que vous devez faire est d'obtenir webflow pour changer les moyens dans lesquels il lie une date. Vous pouvez le faire en écrivant un convertisseur personnalisé.

D'abord, vous aurez besoin d'un service de conversion:

@Component("myConversionService") 
public class MyConversionService extends DefaultConversionService { 

    public void MyConversionService() { 

    } 
} 

Webflow utilisera ce service pour déterminer quels sont les besoins spéciaux de liaison à compte. Maintenant, il suffit d'écrire votre classeur de date spécifique (gardez à l'esprit que webflow par défaut un classeur de date que vous allez juste le remplacer).

@Component 
public class MyDateToString extends StringToObject { 

    @Autowired 
    public MyDateToString(MyConversionService conversionService) { 
     super(Date.class); 
     conversionService.addConverter(this); 
    } 

    @Override 
    protected Object toObject(String string, Class targetClass) throws Exception { 
     try{ 
      return new SimpleDateFormat("MM\dd\yyyy").parse(string);//whatever format you want 
     }catch(ParseException ex){ 
      throw new ConversionExecutionException(string, String.class, targetClass, Date.class);//invokes the typeMissmatch 
     }  
    } 
} 
+0

J'essaye de faire un service de conversion pour une relation many-to-many. En regardant votre réponse, dois-je ajouter les deux classes ("MyConversionService" et "MyDateToString") ou MyDateToString est une implémentation spécifique de MyConversionService? alors, que dois-je mettre dans MyConversionService? merci – SaganTheBest

+0

@ lethal.industry Vous devez créer le 'MyConversionService' et ajouter votre' MyDateToString' à ce service de conversion. Donc, vous auriez besoin de créer les deux. MyDateString n'implémente pas ConversionService –

+0

hmm désolé mais pour moi ce n'est pas clair. Pouvez-vous s'il vous plaît me donner un exemple? Je dois créer une chaîne à @OneToMany Set convertisseur – SaganTheBest

2

j'ai réalisé que par la création de ce haricot:

@component (valeur = "applicationConversionService") public class ApplicationConversionServiceFactoryBean étend FormattingConversionServiceFactoryBean {

@Override 
protected void installFormatters(FormatterRegistry registry) { 
    // Register the default date formatter provided by Spring 
    registry.addFormatter(new DateFormatter("dd/MM/yyyy")); 
} } 

Inscrit le haricot comme ceci:

<bean id="defaultConversionService" class="org.springframework.binding.convert.service.DefaultConversionService"> 
    <constructor-arg ref="applicationConversionService" /> 
</bean> 

ensuite référencée par:

<mvc:annotation-driven conversion-service="applicationConversionService" /> 

Et:

<!-- Enables custom conversion, validation and sets a custom vew factory creator on Spring Webflow --> 
<webflow:flow-builder-services id="flowBuilderServices" conversion-service="defaultConversionService" validator="validator" view-factory-creator="mvcViewFactoryCreator" /> 

Avec cette configuration, il fonctionne très bien pour moi. J'espère que ça aide.

+0

installFormatters ne semble plus exister dans FormattingConversionServiceFactoryBean. – Luke

Questions connexes