2011-01-27 3 views
1

Привет я получаю следующее сообщение об ошибкеОшибка при весенней сессии [Невозможно выставить атрибут «пользователь» сеанс из-за существующей модели объекта с тем же именем]

javax.servlet.ServletException: Cannot expose session attribute 'user' because of an existing model object of the same name 
    org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:141) 
    org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:250) 

Код

@Controller 
@RequestMapping("/admin") 
@SessionAttributes("user") 
public class AdminHome {  
    @RequestMapping("home") 
    public String homePage(HttpSession session, ModelMap map) { 
     map.addAttribute(org.brahmaa.ads.util.impl.UserInfo.getPrincipal(session)); 
     return "admin/home"; 
    } 
} 
+0

когда это происходит? Это весь класс? – Bozho

+0

Это происходит, когда я получаю доступ/admin/home page. Да, это целый класс. – nidhin

ответ

1

Насколько Я понимаю, map.addAttribute(org.brahmaa.ads.util.impl.UserInfo.getPrincipal(session)); извлекает атрибут user из сеанса и помещает его в модель. @SessionAttriubtes инструктирует Spring делать то же самое автоматически. Поэтому они конфликтуют. Вы должны использовать только один из этих подходов, а не оба одновременно.

3

У меня также возникло это исключение. Оказывается, я добавил это свойство Freemarker:

<property name="exposeSessionAttributes" value="true"/> 
+0

Для меня после удаления этой строки из Spring config xml разрешил проблему. –