Search code examples
gwtsmartgwt

SmartGwt 2.5 DataSourceDateTimeField i18n validation error


I currently use smartGwt (version 2.5) inside an other framework (Broadleaf).

When i set the locale to french :

Date fields are well formated (DD/MM/YYYY) and the calendar is translated in french but when i change the date and save the form a popup appear with the error message :"Doit être une date" (Must be a date in english). The validator expect a date with MM/DD/YYYY format.

Link to the class used by the framework to create the date field : https://github.com/BroadleafCommerce/BroadleafCommerce/blob/BroadleafCommerce-2.2.x/admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/client/datasource/dynamic/module/BasicClientEntityModule.java

I found a post with same problem (forums.smartclient.com/showthread.php?t=19847) but there is no answer.

Please, let me know how to solve this problem

EDIT :

What i have tried :

@Override
public void onModuleLoad() {

DateUtil.setShortDateDisplayFormat(DateDisplayFormat.TOEUROPEANSHORTDATE);      
    DateUtil.setShortDateDisplayFormatter(new DateDisplayFormatter() {  
        @Override
        public String format(Date date) {
            if(date == null)
            {
               return null;
            }
            else{
                final DateTimeFormat dateFormatter = DateTimeFormat.getFormat("DD/MM/YYYY");
                return dateFormatter.format(date);
            }
        }
    });

Because the code below is not allowed :

    DateUtil.setShortDateDisplayFormatter(DateUtil.TOEUROPEANSHORTDATE);    

I put my code during the application initialization but the problem still present :-(

Screenshot : http://www.hostingpics.net/viewer.php?id=989088date.png

Do you have an other idea?


Solution

  • Problem solved !

    You have to use the code below during application initialization :

    private static final String DATE_FORMAT = "dd/MM/yyyy HH:mm";
    
    public void onModuleLoad() {    
            DateUtil.setShortDateDisplayFormatter(new DateDisplayFormatter() {      
                @Override
                public String format(Date date) {
                    if(date != null)
                    {
                        final DateTimeFormat dateFormatter = DateTimeFormat.getFormat(DATE_FORMAT);
                        return dateFormatter.format(date);
                    }
                    return null;
                }
            });
    
            DateUtil.setDateParser(new DateParser()
              {
                 public Date parse(String dateString)
                 {
                     try{
                         if(dateString != null){
                             final DateTimeFormat format = DateTimeFormat.getFormat(DATE_FORMAT);
                             return format.parse(dateString);
                         }
                     }catch(Exception e){
                         e.printStackTrace();
                     }
                     return null;
                 }
              });
    }