SmartGwt 2.5 DataSourceDateTimeField i18n验证错误

时间:2013-07-29 18:37:40

标签: gwt smartgwt

我目前在另一个框架(Broadleaf)中使用smartGwt(版本2.5)。

当我将语言环境设置为法语时:

日期字段格式正确(DD / MM / YYYY),日历用法语翻译,但是当我更改日期并保存表单时,弹出窗口显示错误消息:“Doitêtreunedate”(必须是英文日期)。验证者期望使用MM / DD / YYYY格式的日期。

链接到框架用于创建日期字段的类: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

我发现了一个同样问题的帖子(forums.smartclient.com/showthread.php?t=19847),但没有答案。

请让我知道如何解决这个问题

编辑:

我尝试了什么:

@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);
            }
        }
    });

因为不允许使用以下代码:

    DateUtil.setShortDateDisplayFormatter(DateUtil.TOEUROPEANSHORTDATE);    

我在应用程序初始化期间放了我的代码,但问题仍然存在: - (

屏幕截图:http://www.hostingpics.net/viewer.php?id=989088date.png

你有其他想法吗?

2 个答案:

答案 0 :(得分:0)

将字段的日期格式化程序设置为DateDisplayFormat.TOEUROPEANSHORTDATE

dateItem.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATE);

另请检查display seconds in DateTimeItem (SmartGWT)以找到在dateItem.useTextField为真时设置自定义格式化日期字符串的其他方法。

正如论坛帖子所指出的那样,它还可以使用com.smartgwt.client.util.DateUtil方法为应用程序设置默认日期/日期时间格式,应用程序初始化期间应该只使用一次(例如,EntryPoint)。

DateUtil.setShortDateDisplayFormatter(DateUtil.TOEUROPEANSHORTDATE);

答案 1 :(得分:0)

问题解决了!

在应用程序初始化期间,您必须使用以下代码:

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;
             }
          });
}