2010-07-22 13 views

Respuesta

-1

creo que debe ser como este:

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

Lo siento por la tarde puesto, pero esto es lo que tiene que hacer. Spring Webflow realiza una vinculación de datos personalizada. Es similar a cómo lo hace Spring MVC. La diferencia es donde lo maneja. Spring MVC lo maneja en el nivel del controlador (usando @InitBinder).

Spring webflow lo hace en el nivel de encuadernación. Antes de ejecutar un flujo web de transición vinculará todos los valores de parámetros al objeto, luego validará el formulario (si validate = "true") y luego invocará la transición en una validación exitosa.

Lo que debe hacer es conseguir que webflow cambie los medios en los que se vincula una fecha. Puede hacer esto escribiendo un convertidor personalizado.

primer lugar se necesita un servicio de conversión:

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

    public void MyConversionService() { 

    } 
} 

Webflow utilizará este servicio para determinar cuáles son las necesidades especiales de unión que se representó. Ahora solo escriba su carpeta de fecha específica (tenga en cuenta que el flujo de datos predeterminado de una carpeta de fecha lo anulará).

@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

estoy tratando de hacer un servicio de conversión para una relación de muchos a muchos. Al ver su respuesta, ¿tengo que agregar AMBAS clases ("MyConversionService" y "MyDateToString") o MyDateToString es una implementación específica de MyConversionService? entonces, ¿qué tengo que poner en MyConversionService? Gracias – SaganTheBest

+0

@ letal.industry. Tendría que crear el 'MyConversionService' y agregar su' MyDateToString' a ese servicio de conversión. Entonces necesitarías crear ambos. MyDateString no implementa ConversionService –

+0

hmm lo siento, pero para mí no está claro. ¿Puedes darme un ejemplo? Necesito crear un convertidor String to @OneToMany Set SaganTheBest

2

I consigue que mediante la creación de este bean:

@Component (valor = "applicationConversionService") public class ApplicationConversionServiceFactoryBean extiende FormattingConversionServiceFactoryBean {

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

Registrado el grano de esta manera:

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

A continuación referenciado por:

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

Y:

<!-- 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 esta configuración funciona bien para mí. Espero que ayude.

+0

installFormatters parece que ya no existe en FormattingConversionServiceFactoryBean. – Luke

Cuestiones relacionadas