<table: column> Roo-тег для свойства ссылочной сущности - PullRequest
1 голос
/ 13 октября 2011

У меня есть два класса (ученик, класс) в Roo-проекте и их представления в скаффолде.

ученик и класс имеют отношение 1: 1

В списке.jspx ученика Я хотел бы отобразить столбец для свойства класса.

Я не знаю правильные атрибуты для таблицы: column-tag.В следующем примере выдается ошибка:

SpelEvaluationException: EL1027Epos 4): индексирование в тип 'com.pupil' не поддерживается

<table:table data="${pupil}" duplicate="true" id="l_com_pupil" path="/admin/pupil" z="user-managed">
   <table:column id="c_com_pupil_pupilName" property="pupilName" z="user-managed"/>
   <!-- I'd like to display the attribute teacher_name of the class 'class' here but it doesn't work -->
   <table:column id="c_com_pupil_class_teacherName" property="teacherName"  z="user-managed"/>
</table:table>

Ответы [ 2 ]

3 голосов
/ 14 октября 2011

Вместо того, чтобы возиться с файлами jspx, вы можете просто сделать это, реализовав конвертер для сущности Teacher в ApplicationServiceFactoryBean.java.

См. Пример метода преобразования ниже.

static class com.mycompany.test.controllers.ApplicationConversionServiceFactoryBean.TeacherConverter implements org.springframework.core.convert.converter.Converter<com.mycompany.test.domain.master.Teacher, java.lang.String>  {
        public String convert(Teacher teacher) {
            return new StringBuilder().append(teacher.getName()).toString();
        }
}

По умолчанию Roo генерирует эти конвертеры, и они хранятся в файле ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj.

Вы можете вставить рефакторинг связанного метода для сущности Teacher из этого файла aspectJ в файл ApplicationServiceFactoryBean.java и затем выполнить собственное преобразование, которое будет использоваться для отображения имени Teacher во всем приложениикак в приведенном выше примере.

Ура и всего наилучшего с Roo!

1 голос
/ 21 марта 2012

Вот как я это сделал, не для перечисления, а для отображения имени учителя при просмотре сущности ученика:

  • Отредактируйте контроллер и, в частности, метод show (в файле java, конечно, не в файле aj).
  • Добавьте атрибут к вашей модели пользовательского интерфейса, например «teacherName» (используйте Model.addAttribute), где вы заполняете имя учителя с желаемым именем.
  • Добавьте в файл show.jspx что-то вроде:

    <div><label for="_pupilTeacher">Teacher Name:</label><div class="box">${teacherName}</div></div><br/>

(альтернативно, вы можете создать новый файл tagx со своими параметрами)

Надеюсь, это помогло.

Radu

...