Standardmäßiges Datumsformat in Spring WebFlow ist "yyyy-MM-dd".Wie ändert man das Standardformat in StringToDate? Spring WebFlow
Wie zu einem anderen Format wechseln? "dd.mm.yyyy" zum Beispiel.
Standardmäßiges Datumsformat in Spring WebFlow ist "yyyy-MM-dd".Wie ändert man das Standardformat in StringToDate? Spring WebFlow
Wie zu einem anderen Format wechseln? "dd.mm.yyyy" zum Beispiel.
denke ich, es so sein muss:
StringToDate std = new StringToDate();
std.setPattern("dd.MM.yyyy");
für die späte Post Sorry, aber hier ist das, was Sie zu tun haben. Spring Webflow führt benutzerdefinierte Datenbindung aus. Es ist ähnlich wie Spring MVC es tut. Der Unterschied ist jedoch, wo es behandelt wird. Spring MVC behandelt es auf der Controller-Ebene (mit dem @InitBinder).
Spring Webflow tut es auf der Bindungsebene. Vor dem Ausführen einer Transition bindet Webflow alle Parameterwerte an das Objekt und validiert das Formular (wenn validate = "true"). Anschließend wird der Übergang bei einer erfolgreichen Validierung aufgerufen.
Was Sie tun müssen, ist Webfluss zu bekommen, um die Mittel zu ändern, in denen es ein Datum bindet. Sie können dies tun, indem Sie einen benutzerdefinierten Konverter schreiben.
Als erstes haben Sie einen Konvertierungsservice benötigen:
@Component("myConversionService")
public class MyConversionService extends DefaultConversionService {
public void MyConversionService() {
}
}
Webflow wird diesen Service nutzen, um zu bestimmen, welche besonderen Bindungsbedürfnisse zu bilanzieren. Schreiben Sie jetzt einfach Ihre spezifische Datumsmappe (denken Sie daran, dass Webflow standardmäßig eine Datumsmappe verwendet, die Sie einfach überschreiben).
@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
}
}
}
I erreicht, dass diese durch die Schaffung bean:
@Component (value = "applicationConversionService") public class ApplicationConversionServiceFactoryBean FormattingConversionServiceFactoryBean erstreckt {
@Override protected void installFormatters(FormatterRegistry registry) { // Register the default date formatter provided by Spring registry.addFormatter(new DateFormatter("dd/MM/yyyy")); } }
Registriert die Bohne so:
<bean id="defaultConversionService" class="org.springframework.binding.convert.service.DefaultConversionService">
<constructor-arg ref="applicationConversionService" />
</bean>
dann durch referenzierte:
<mvc:annotation-driven conversion-service="applicationConversionService" />
Und:
<!-- 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" />
Mit dieser Konfiguration ist es für mich gut funktioniert. Ich hoffe, es hilft.
installFormatters scheint nicht mehr in FormatConversionServiceFactoryBean existieren. – Luke
Ich versuche, einen Konvertierungsdienst für eine Viele-zu-viele-Beziehung zu erstellen. schau auf deine Antwort, muss ich BEIDEN Klassen hinzufügen ("MyConversionService" und "MyDateToString") oder MyDateToString ist eine spezifische Implementierung von MyConversionService? dann, was muss ich in MyConversionService setzen? danke – SaganTheBest
@ lethal.industry Sie müssten den 'MyConversionService' erstellen und Ihren' MyDateToString' zu diesem Konvertierungsdienst hinzufügen. Sie müssten also beide erstellen. MyDateString implementiert ConversionService –
hmm Entschuldigung, aber für mich ist es nicht klar. Kannst du mir bitte ein Beispiel geben? Ich muss einen String zu @OneToMany Set Konverter –
SaganTheBest