我目前在另一个框架(Broadleaf)中使用smartGwt(版本2.5)。
当我将语言环境设置为法语时:
日期字段格式正确(DD / MM / YYYY),日历用法语翻译,但是当我更改日期并保存表单时,弹出窗口显示错误消息:“Doitêtreunedate”(必须是英文日期)。验证者期望使用MM / DD / YYYY格式的日期。
我发现了一个同样问题的帖子(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
你有其他想法吗?
答案 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;
}
});
}