Запись редактирования SmartGWT Dynamic Form с логическими значениями - PullRequest
0 голосов
/ 08 июня 2011

У меня возникла следующая проблема при использовании SmartGWT 2.4:

  • у нас есть DynamicForm, показывающий несколько статических текстовых полей (поэтому форма находится в режиме только для чтения).Форма использует источник данных в фоновом режиме и наш собственный FormItemFactory для создания правильных элементов формы на основе наших метаданных.Некоторые элементы формы содержат логические значения, отображаемые в виде строк: например, 'isHidden': ложь или 'canShow': true .
  • по действию пользователя (нажатие кнопки)нам нужно переключить форму в режим редактирования.

Мы делаем это следующим образом:

  • сначала мы собираем значения формы как rec = form.getValuesAsRecord(), получая объект Record
  • , затем создаем новыйдинамическую форму и установите в нее тот же источник данных, что и у исходного, имеет
  • , тогда мы вызываем метод newForm.editRecord(rec) недавно созданной динамической формы

Таким образом, статические значения формы отображаются как редактируемыеполя ввода. Однако проблема в этих логических значениях.Они правильно преобразованы в флажки, но все они проверены по умолчанию.

Я думаю, что строковые значения 'false' или 'true' не разбираются в логические значения и устанавливаются как значения для соответствующихфлажок пункт.

Могу ли я как-то повлиять на этот процесс?Я пытался предоставить анонимную реализацию FormItemValueParser до CheckboxItem , но оказалось, что он будет использоваться только для произвольных текстовых элементов формы.

Я буду очень благодарен залюбой данный намек.

1 Ответ

0 голосов
/ 09 июня 2011

Попробуйте установить значение явно для formItem с помощью record.getAttributeAsBoolean ("formItemName")

BooleanItem boolItem = new BooleanItem("boolname");
DynamicForm form = new DynamicForm();
form.setItems(boolItem);

//Get record
Record rec = form.getValuesAsRecord();
boolItem.setValue("boolname",rec.getAttributeAsBoolean("boolname"));
...