2010-07-22 43 views

Trả lời

-1

Tôi nghĩ rằng nó phải là như thế này:

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

Xin lỗi vì cuối bài nhưng đây là những gì bạn phải làm. Spring Webflow thực hiện tùy chỉnh Data Binding. Nó tương tự như cách Spring MVC thực hiện nó. Sự khác biệt mặc dù là nơi nó xử lý nó. Spring MVC xử lý nó trên cấp độ bộ điều khiển (sử dụng @InitBinder).

Luồng web mùa xuân thực hiện trên cấp độ liên kết. Trước khi thực thi luồng web chuyển đổi sẽ ràng buộc tất cả các giá trị tham số cho đối tượng, sau đó xác nhận biểu mẫu (nếu validate = "true"), sau đó gọi quá trình chuyển đổi trên xác thực thành công.

Điều bạn cần làm là làm cho luồng web thay đổi phương tiện mà nó liên kết Ngày. Bạn có thể làm điều này bằng cách viết một công cụ chuyển đổi tùy chỉnh.

Trước tiên, bạn sẽ cần một dịch vụ chuyển đổi:

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

    public void MyConversionService() { 

    } 
} 

Webflow sẽ sử dụng dịch vụ này để xác định những nhu cầu ràng buộc đặc biệt để được hạch toán. Bây giờ, chỉ cần ghi ngày tháng cụ thể của bạn (lưu ý rằng luồng web mặc định là một trình kết dính ngày bạn sẽ chỉ ghi đè lên nó).

@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

Tôi đang cố gắng thực hiện dịch vụ chuyển đổi cho mối quan hệ nhiều-nhiều. nhìn vào câu trả lời của bạn, có tôi để thêm BOTH lớp học ("MyConversionService" và "MyDateToString") hoặc MyDateToString là một thực hiện cụ thể của MyConversionService? sau đó, những gì tôi phải đặt trong MyConversionService? cảm ơn – SaganTheBest

+0

@ lethal.industry Bạn sẽ cần phải tạo 'MyConversionService' và thêm' MyDateToString' vào dịch vụ chuyển đổi đó. Vì vậy, bạn sẽ cần phải tạo cả hai. MyDateString không thực hiện ConversionService –

+0

hmm xin lỗi nhưng đối với tôi thì không rõ. bạn có thể vui lòng cung cấp cho tôi một ví dụ không? Tôi cần tạo một Chuỗi cho @OneToMany Đặt công cụ chuyển đổi – SaganTheBest

2

tôi đã đạt được điều đó bằng cách tạo ra đậu này:

@Component (value = "applicationConversionService") public class ApplicationConversionServiceFactoryBean kéo dài FormattingConversionServiceFactoryBean {

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

đăng ký đậu như thế này:

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

Sau đó tham chiếu bởi:

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

Và:

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

Với cấu hình này nó hoạt động tốt đối với tôi. Tôi hy vọng nó sẽ giúp.

+0

installFormatters dường như không còn tồn tại trong FormattingConversionServiceFactoryBean nữa. – Luke

Các vấn đề liên quan