2010-07-22 10 views

risposta

-1

credo che debba essere così:

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

Ci scusiamo per il ritardo post, ma qui è quello che devi fare. Spring Webflow esegue il binding dei dati personalizzato. È simile a come Spring MVC lo fa. La differenza però è dove la gestisce. Spring MVC lo gestisce a livello di controller (usando @InitBinder).

Il flusso della primavera lo raggiunge a livello di rilegatura. Prima di eseguire un webflow di transizione si collegheranno tutti i valori dei parametri all'oggetto quindi convaliderà il modulo (se validate = "true") quindi invoca la transizione su una convalida corretta.

Quello che devi fare è ottenere il webflow per cambiare il modo in cui lega una data. Puoi farlo scrivendo un convertitore personalizzato.

primo luogo è necessario un servizio di conversione:

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

    public void MyConversionService() { 

    } 
} 

WebFlow utilizzerà questo servizio per determinare quali particolari esigenze vincolanti per essere rappresentato. Ora scrivi solo il tuo raccoglitore di date specifico (tieni presente i valori predefiniti del flusso di traffico di un raccoglitore di date che lo sovrascriverà).

@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

sto provando a fare un servizio di conversione per una relazione molti-a-molti. guardando la tua risposta, devo aggiungere BOTH classes ("MyConversionService" e "MyDateToString") o MyDateToString è un'implementazione specifica di MyConversionService? allora, cosa devo mettere in MyConversionService? grazie – SaganTheBest

+0

@ lethal.industry Dovresti creare il 'MyConversionService' e aggiungere il tuo' MyDateToString' a quel servizio di conversione. Quindi avresti bisogno di creare entrambi. MyDateString non implementa ConversionService –

+0

spiacente ma per me non è chiaro. puoi per favore fornirmi un esempio? Devo creare una stringa su @OneToMany Set convertitore – SaganTheBest

2

ho raggiunto che con la creazione di questo fagiolo:

@Component (value = "applicationConversionService") public class ApplicationConversionServiceFactoryBean estende FormattingConversionServiceFactoryBean {

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

Registrato il fagiolo così:

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

Poi riferisce a:

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

E:

<!-- 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" /> 

Con questa configurazione funziona bene per me. Spero possa essere d'aiuto.

+0

installFormatters sembra non esistere più più in FormattingConversionServiceFactoryBean. – Luke

Problemi correlati