0

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

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

日期字段格式正确(DD/MM/YYYY),日历翻译成法语,但是当我更改日期并保存表单时,会出现一个弹出窗口并显示错误消息:“Doit être une date”(必须是英文日期)。验证器期望使用 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

你有别的想法吗?

4

2 回答 2

0

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

dateItem.setDateFormatter(DateDisplayFormat.TOEUROPEANSHORTDATE);

还要检查DateTimeItem (SmartGWT) 中的显示秒数,以找到另一种设置自定义格式日期字符串dateItem.useTextField的方法。

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

DateUtil.setShortDateDisplayFormatter(DateUtil.TOEUROPEANSHORTDATE);
于 2013-07-30T15:01:09.400 回答
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;
             }
          });
}
于 2013-08-02T14:44:09.660 回答