Das Standard-Datumsformat in Spring WebFlow ist "jjjj-MM-tt".
Wie kann man in ein anderes Format wechseln? Zum Beispiel "tt.mm.jjjj".
Das Standard-Datumsformat in Spring WebFlow ist "jjjj-MM-tt".
Wie kann man in ein anderes Format wechseln? Zum Beispiel "tt.mm.jjjj".
Entschuldigen Sie den späten Beitrag, aber hier ist, was Sie tun müssen. Spring Webflow tut benutzerdefinierte Data Binding. Es ist ähnlich, wie Spring MVC es tut. Der Unterschied ist jedoch, wo es gehandhabt wird. Spring MVC behandelt es auf Controllerebene (mit @InitBinder).
Spring Webflow erledigt dies auf der Bindungsebene. Vor der Ausführung einer Transition bindet Webflow alle Parameterwerte an das Objekt und validiert dann das Formular (wenn validate="true") und ruft bei erfolgreicher Validierung die Transition auf.
Sie müssen Webflow dazu bringen, die Art und Weise zu ändern, in der es ein Datum bindet. Sie können dies tun, indem Sie einen benutzerdefinierten Konverter schreiben.
Zunächst benötigen Sie einen Konvertierungsdienst:
@Component("myConversionService")
public class MyConversionService extends DefaultConversionService {
public void MyConversionService() {
}
}
Webflow nutzt diesen Dienst, um zu ermitteln, welche speziellen Bindungen berücksichtigt werden müssen. Schreiben Sie nun einfach Ihren spezifischen Datumsbinder (denken Sie daran, dass Webflow einen Datumsbinder vorgibt, den Sie einfach überschreiben können).
@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
}
}
}
Ich versuche, einen Konvertierungsdienst für eine viele-zu-viele-Beziehung zu tun. Blick auf Ihre Antwort, muss ich hinzufügen, BEIDE Klassen ("MyConversionService" und "MyDateToString") oder MyDateToString ist eine spezifische Implementierung von MyConversionService? dann, was muss ich in MyConversionService setzen? danke
@lethal.industry Sie müssen die MyConversionService
und fügen Sie Ihre MyDateToString
zu diesem Konvertierungsdienst. Sie müssen also beide erstellen. MyDateString implementiert keinen ConversionService
Hmm sorry, aber für mich ist es nicht klar. können Sie mir bitte ein Beispiel geben? Ich muss einen String zu @OneToMany Set<MyEntity> Konverter erstellen
Das habe ich mit der Erstellung dieser Bohne erreicht:
@Component(value = "applicationConversionService") public class ApplicationConversionServiceFactoryBean erweitert FormattingConversionServiceFactoryBean {
@Override protected void installFormatters(FormatterRegistry registry) { // Register the default date formatter provided by Spring registry.addFormatter(new DateFormatter("dd/MM/yyyy")); } }
So wird die Bohne registriert:
<bean id="defaultConversionService" class="org.springframework.binding.convert.service.DefaultConversionService">
<constructor-arg ref="applicationConversionService" />
</bean>
Dann referenziert von:
<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 funktioniert es bei mir einwandfrei. Ich hoffe, es hilft.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.