Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по velocity 
:(
    Опции темы
greef
Дата 14.1.2008, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Есть вопрос по velocity

загрузузил всех юзеров и их друзей
Если просто выводить список ${q.Friend}, то выводиться список
объектов.

org.gritsik.model.Friend@1e7c609[ id=2 Friend=Sidorov]
org.gritsik.model.Friend@17a7adf[ id=6 Friend=Kozev1]
org.gritsik.model.Friend@11bda67[ id=1 Friend=Ivanov] 


Но если пробую взять поле ${q.Friends.Friend}, то
Код

${q.Friends.Friend} is not a valid reference.


Я так понимаю, что идет такая очередность command.[private Set
Friend].[поле объекта Friend]. Но почему тогда ошибка?

Вот модель и маппинг
Код

public class User extends BaseObject{
    private Long id;
    private String name;
    private String location;
    private String sex;
    private String birthdate;
    private Set friends;

public class Friend extends BaseObject{
    private Long id;
    private String friend;



Маппинг
 
Код

   <class name="org.gritsik.model.User" table="User">
        <id name="id" column="id" unsaved-value="0">
            <generator class="native"/>
        </id>
        <property name="name" column="name" not-null="true"/>
        <property name="location" column="location" not-null="true"/>
        <property name="sex" column="sex" not-null="true"/>
        <property name="birthdate" column="birthdate" not-null="true"/>
        <set name="friends" inverse="true" lazy="false">
            <key column="user_id"/>
            <one-to-many class="org.gritsik.model.Friend"/>
        </set>
......................


Заранее спасибо!
PM MAIL   Вверх
Tony
Дата 14.1.2008, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

Репутация: 6
Всего: 12



${q.Friends[1].friend}. Надo типа так. Но jeто не прокатит т.к. friends Set а не List.

Это сообщение отредактировал(а) Tony - 15.1.2008, 10:32


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
Kangaroo
Дата 14.1.2008, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 14
Всего: 104



Цитата(greef @  14.1.2008,  15:40 Найти цитируемый пост)
Я так понимаю, что идет такая очередность command.[private Set
Friend].[поле объекта Friend].

в Велосити так нельзя. Стандартными средствами можно только foreach. Но есть вроде VelocityTools, которые упрощают работу с коллекциями - посмотрите на их сайте.


--------------------
Lost....
PM MAIL MSN   Вверх
greef
Дата 14.1.2008, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Спасибо, буду смотреть.
PM MAIL   Вверх
greef
Дата 15.1.2008, 01:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Цитата(Tony @ 14.1.2008,  16:43)
${q.Friends[1].friends}. Надo типа так. Но jeто не прокатит т.к. friends Set а не List.

Ради интереса изменил Set на List:

Код

public class User extends BaseObject{
    private Long id;
    private String name;
    private String location;
    private String sex;
    private String birthdate;
    private List friends;
...........................


Ну и маппинг

Код

.........
        <bag name="friends" inverse="true" lazy="false">
            <key column="user_id"/>
            <one-to-many class="org.gritsik.model.Friend"/>
        </bag>
.........


И test.vm
Код

.......
    #foreach($q in $users)
        ${q.friends[1].friends}
    #end
........


Выдает ошибку:

Код

00:46:08,750: ERROR - CommonsLoggingLogSystem.logVelocityMessage(43) | ResourceManager.getResource() parse exception: org.apache.velocity.exception.ParseErrorException: Encountered "[1].friends}\r\n    " at line 38, column 20.
Was expecting one of:
    "}" ...
    <DOT> ...
    "(" ...

PM MAIL   Вверх
intr
Дата 15.1.2008, 04:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 18.12.2005

Репутация: 2
Всего: 2



Цитата(Tony @ 14.1.2008,  21:43)
${q.Friends[1].friends}. Надo типа так. Но jeто не прокатит т.к. friends Set а не List.

для Set будет нечто подобное ${q.Friends.get(1)}. Тоесть по ключу получаем значение из Set!

Добавлено через 2 минуты и 59 секунд
Цитата(greef @ 15.1.2008,  06:53)
Код

.......
    #foreach($q in $users)
        ${q.friends[1].friends}
    #end
........

так правильнее
Код

.......
    #foreach($q in $users)
        ${q.friend}
    #end
........

только надо не забывать что должен быть геттер для поля friend у объекта Friend

p/s
Надо больше читать манов там все в примерах показано!
--------------------
Исследователь бытия и по совместительству Java-developer
PM MAIL WWW Skype GTalk   Вверх
greef
Дата 15.1.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 47
Регистрация: 10.10.2007

Репутация: нет
Всего: нет



Решением в данном вопросе - 
 
           #foreach($user in $users)
                #foreach($f in $user.friends)
                    ${f.friend}<br>
                #end
            #end

Где
Код

public class User extends BaseObject{
    private Long id;
    private String name;
    private String location;
    private String sex;
    private String birthdate;
    private Set friends;
.....


и
Код

.....
        <set name="friends" inverse="true" cascade="all" lazy="false">
            <key column="user_id"/>
            <one-to-many class="org.gritsik.model.Friend"/>
        </set>
.....


P.S. Всем спасибо за помощь smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0487 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.