Почему тот же код работает в сервлете, но не в контроллере Spring? - PullRequest
0 голосов
/ 18 февраля 2011

Этот код работает в сервлете:

PicasawebService service = new PicasawebService("Picasa test");
PicasawebClient picasaClient = new PicasawebClient(service);
List<AlbumEntry> albums = picasaClient.getAlbums("cgcmh1@gmail.com");
for(AlbumEntry album: albums){
    resp.getWriter().println(album.getTitle().getPlainText());
    List<PhotoEntry> photos = picasaClient.getPhotos(album);
    req.setAttribute("photos", photos);
}

Поэтому я попытался поместить его в контроллер Spring, используя model.addAttribute (ниже) вместо req.setAttribute (выше):

PicasawebService service = new PicasawebService("Picasa test");
PicasawebClient picasaClient = new PicasawebClient(service);
List<AlbumEntry> albums = picasaClient.getAlbums("cgcmh1@gmail.com");
for (AlbumEntry album : albums){
    logger.warn("albums:" + album.getTitle().getPlainText());
    List<PhotoEntry> photos = picasaClient.getPhotos(album);
    model.addAttribute("photos", photos);
}

Однако код Spring не может найти какие-либо альбомы в Picasa, а код сервлета находит их успешно.

Кто-нибудь знает, почему это так?

В обоих случаях они используют эта версия PicasawebClient и эта версия PicasawebService .

1 Ответ

0 голосов
/ 18 февраля 2011
model.addAttribute("photos", photos);

будет переопределять атрибут photos карты на каждой итерации, поэтому вы сможете получить доступ только к последнему альбому.

...