Как отобразить атрибут атрибута в окне выбора в приложении, созданном ROO - PullRequest
7 голосов
/ 14 января 2011

Я сейчас вхожу в Spring-Roo и Spring-MVC. У меня есть довольно простое приложение, которое Ру сгенерировал для меня. Он состоит из двух сущностей, Record и Car, где Record имеет ссылку на один конкретный автомобиль.

После начальной настройки я изменяю одно из представлений для использования в поле: выберите и отобразите комбинированный список для выбора доступных автомобилей и добавьте их в запись.

<field:select field="car" id="c_de_recordcars_domain_Record_car" items="${cars}" path="/cars" />

Этот тег вызывает у меня головную боль. Как и сейчас, в поле со списком отображаются все доступные автомобили ... но он отображает все атрибуты (например, «Автомобиль 1 Вт 18 января 00:00:00 CET 2011 Friver1»). Все, что я хочу, - это то, что в выпадающем списке отображается только атрибут имени («Автомобиль 1»).

Внутри тега есть только атрибут "itemValue", но он только отображает значение, которое помещается в параметр запроса ... Мне нужно что-то вроде "displayValue", где я могу указать на поле Java, которое используется для отображения.

Как мне этого добиться? Спасибо

Ответы [ 4 ]

11 голосов
/ 28 ноября 2011

:) Просто провел все воскресенье, борясь с той же проблемой.Просто добавьте itemLabel = "имя вашего поля из класса автомобиля".

<field:select field="car" 
              id="c_de_recordcars_domain_Record_car" 
              items="${cars}" 
            **itemLabel="CarName"**
              itemValue="id"
              path="/cars" />
8 голосов
/ 20 февраля 2011

Spring Roo (используя функциональность Spring MVC) предлагает использовать Application Conversion Service.Вы должны реализовать метод Converter<Car, String> getCarConverter() внутри ApplicationConversionServiceFactoryBean.

Подробнее см. .

2 голосов
/ 05 августа 2011

Для Spring roo 1.1.4 и выше:

  1. Внимательно прочитайте ApplicationConversionServiceFactoryBean.java

  2. Внимательно прочитайте ApplicationConversionServiceFactoryBean_Roo_ConversionService.aj Вы должны найти статический внутренний класс CarConverter здесь. Это должно быть очень долго префикс. Вы должны найти метод installLabelConverters здесь с длинным префиксом.

  3. Скопируйте код CarConverter со 2 на 1, удалите длинный префикс. Измените код внутри метода convert () так, как вам нравится.

  4. Скопируйте соответствующие операторы импорта со 2 на 1.

  5. Скопируйте код метода installLabelConverters со 2 на 1, удалите длинный префикс.

  6. Теперь сохраните файл 1.

  7. Запустите roo, дайте ему обновить .aj файл.

  8. Используйте "mvn tomcat: run", чтобы скомпилировать и запустить его снова.

0 голосов
/ 05 февраля 2011

вы можете попытаться добавить toString метод в сущности Car, в котором вернуть Car поле имени. и подтвердите этот профиль в path:/src/main/webapp/WEB-INF/tags/form/fields/select.tag x обновить все содержимое опции:

<option value="${item}">
    <spring:eval expression="item" />
</option>

до:

<option value="${item}">
    ${item}
</option>
...