В моем наборе данных есть поле, определенное как:
DataSourceDateTimeField dateField = new DataSourceDateTimeField("date");
и StaticTextItem
in DynamicForm
определены как
StaticTextItem dateItem = new StaticTextItem("date", "Date");
Я много играл с различными комбинациями setDateFormatter
, но значения даты и времени по-прежнему отображаются как 2011-08-23T20:00:00
(источник данных получает его в json как поле yyyy-MM-dd'T'HH:mm:ss.SSSZ
).
Есть ли какой-нибудь простой способ вывода значений даты и времени в StaticTextItem
? Я предполагаю, используя DynamicForm.fetchData()
.
UPD1. Пример данных.
Строка таблицы в PgSQL:
1 | "2011-09-29 12:10:05.010276+04" | "Europe"
Данные, отправленные службой REST:
{
"location":"Europe",
"id":1,
"date":"2011-09-29T08:10:05.010+0000"
}
Данные, извлеченные SGWT из службы REST (я сбросил их с JSON.encode(XMLTools.selectObjects(data, "/").getJavaScriptObject())
в моей реализации transformResponse()
):
{
"location":"Europe",
"id":1,
"date":"2011-09-29T08:10:05"
}
Значение, отображаемое в StaticTextField:
2011-09-29T08:10:05
Таким образом, значения даты и времени, возвращаемые сервером, похоже, соответствуют стандарту , а также у меня нет предупреждений в консоли разработчика.
UPD2. Может быть, я делаю что-то не так в моем transformResponse()
?
protected void transformResponse(DSResponse response, DSRequest request, Object data) {
String json = JSON.encode(XMLTools.selectObjects(data, "/").getJavaScriptObject());
SC.logWarn("Response received");
SC.logWarn(json);
Record[] records = jsonToRecords(json);
//safe HTML text values
for (Record rec: records) {
for (DataSourceField field: getFields()) {
if (field.getType() == FieldType.TEXT) {
String textVal = rec.getAttribute(field.getName());
if (textVal != null) {
textVal = SafeHtmlUtils.htmlEscape(textVal);
}
rec.setAttribute(field.getName(), textVal);
}
}
}
response.setData(records);
response.setStartRow(0);
response.setEndRow(records.length);
response.setTotalRows(records.length);
}
/**
* Converts JS-array into SmartGWT records
*/
public static native ListGridRecord[] jsonToRecords(String jsonString) /*-{
var json = eval(jsonString);
return @com.smartgwt.client.widgets.grid.ListGrid::convertToListGridRecordArray(Lcom/google/gwt/core/client/JavaScriptObject;)(json);
}-*/;