Formato data predefinito in Spring WebFlow è "aaaa-MM-gg".Come modificare il formato predefinito in StringToDate? Spring WebFlow
Come passare a un altro formato? "gg.mm.aaaa" per esempio.
Formato data predefinito in Spring WebFlow è "aaaa-MM-gg".Come modificare il formato predefinito in StringToDate? Spring WebFlow
Come passare a un altro formato? "gg.mm.aaaa" per esempio.
credo che debba essere così:
StringToDate std = new StringToDate();
std.setPattern("dd.MM.yyyy");
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
}
}
}
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.
installFormatters sembra non esistere più più in FormattingConversionServiceFactoryBean. – Luke
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
@ 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 –
spiacente ma per me non è chiaro. puoi per favore fornirmi un esempio? Devo creare una stringa su @OneToMany Set convertitore –
SaganTheBest