2015-03-25 4 views
1

У меня есть несколько таблиц с идентификаторами и описательными данными. В дополнительной таблице указаны эти таблицы.Измените отображаемый столбец в datatables для ссылочного поля

Table A 
id int (key) 
name string 
description string 


Table B 
id int (key) 
name string 
description string 

Table mix 
id_A FK(id tableA) 
id_B FK(id tableB) 

Если я теперь создать DataTable для таблицы смешивания

web mvc datatables add --type ~.web.mixController 

все поля (название и описание) таблицы А и В показаны.

1) Как я могу изменить это, чтобы отображалось только имя?

2) Кажется, что фильтрация на эталонных столбцах не работает? Я получаю исключение: org.gvnix.web.datatables.util.DatatablesUtils - Exception готовит фильтр для лица

+0

об исключении ... Вы можете получить более подробную информацию? – jmvivo

ответ

1

Самый простой способ изменить представление а юридическое лицо настроить свой метод toString. По умолчанию Spring Roo генерирует это как шаблон с помощью утилиты Apache Commons, которая использует отражения для генерации строки представления . Этот метод генерируется аннотацией @RooToString, и вы можете найти его в файле {entityClass}_Roo_ToString.aj. Чтобы настроить его только push-in (см. Spring Roo documentation about it) способ.

Об ошибке, поскольку я комментирую ваш вопрос, нам нужна дополнительная информация, чтобы идентифицировать проблему. Скопируйте несколько строк трассировки стека.

С уважением, Chema.

+0

Это не работает для меня, я нажал и отладил метод toString, но никогда не попадал внутрь этого метода, я видел в webmvc-config.xml этот bean-компонент: '' возможно, это кто контролирует поля, которые будут отображаться с помощью datatable? –

+0

Также проверьте 'ApplicationConversionServiceFactoryBean' и связанные с ним файлы _.aj_. 'DatatablesUtilsBean' должен использовать его для преобразования типов. – jmvivo

0

После преобразования в исходный код контроллера я понял, что контроллеры извлекают данные в datatables через метод datatablesUtilsBean_dtt.populateDataSet и используют аннотацию преобразования autwired propertyService.

Поэтому для того, чтобы изменить значение отображаемой области необходимо изменить класс контроллера ApplicationConversionServiceFactoryBean в способах преобразователя, например:

getMixToStringConverter() 

, где Микс представляет собой таблицу преобразования в строку и возвращаемое значение этот метод является строковым представлением вашего объекта. вы можете изменить свой метод, как это только показать имя:

return new StringBuilder().append(mix.getTableA().getName).append(mix.getTableB().getName()).toString();