2010-07-22 24 views

cevap

-1

Ben böyle olmalı bence. İlkbahar Web Akışı özel Veri Bağlama yapar. Spring MVC'nin yaptığı gibi. Fark olsa da onu ele geçiriyor. Bahar MVC, kontrol ünitesinde (@InitBinder kullanarak) ele alır.

Yay webflow'u bağlanma düzeyindedir. Bir geçiş web akışını yürütmeden önce, tüm parametre değerlerini nesneye bağlar ve sonra formu doğrular (validate = "true" ise), başarılı bir doğrulamada geçişi çağırır.

Yapmanız gereken şey, bir Tarih'i bağladığı araçları değiştirmek için web akışını elde etmektir. Özel bir dönüştürücü yazarak bunu yapabilirsiniz.

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

    public void MyConversionService() { 

    } 
} 

WebFlow hesaba ne özel bağlanma ihtiyacı belirlemek için bu hizmeti kullanacak:

Önce bir dönüşüm hizmetini gerekir. Şimdi sadece belirli bir tarihçenizi yazınız (webflow varsayılanlarını bir tarih ciltleyicisine aklınızda bulundurun).

@Component (değeri = "applicationConversionService") genel sınıf ApplicationConversionServiceFactoryBean fasulyesi kayıtlı FormattingConversionServiceFactoryBean {

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

uzanmaktadır:

@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 
     }  
    } 
} 
4

Üzgünüz ama burada yapmanız gereken şudur:

+0

Çoktan çoğa bir ilişki için bir dönüştürme hizmeti yapmaya çalışıyorum. cevabınıza baktığımda, BOTH sınıflarını ("MyConversionService" ve "MyDateToString") veya MyDateToString'in MyConversionService'in özel bir uygulaması olduğunu eklemeliyim? o zaman, MyConversionService'e ne koymalıyım? teşekkürler – SaganTheBest

+0

@ lethal.industry "MyConversionService" 'i oluşturmalı ve 'MyDateToString' 'i bu dönüştürme servisine eklemelisiniz. Yani ikisini de oluşturmanız gerekecek. MyDateString, ConversionService –

+0

hmm'yi uygulamıyor ama benim için açık değil. bana bir örnek verebilir misiniz? @OneToMany Set dönüştürücü – SaganTheBest

2

Bu fasulye oluşturarak bu elde bunun gibi:

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

Ve:

<bean id="defaultConversionService" class="org.springframework.binding.convert.service.DefaultConversionService"> 
    <constructor-arg ref="applicationConversionService" /> 
</bean> 
Sonra tarafından başvurulan benim için çalışıyor Bu yapılandırma ile

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

. Umut ediyorum bu yardım eder.

+0

artık Biçimlendirme artık BiçimlendirmeConversionServiceFactoryBean var görünür. – Luke

İlgili konular