2012-05-07 30 views
0

我有一個使用Spring MVC以Java編寫的簡單應用程序。憑證類僅包含登錄時提供的用戶名&。如何使用Spring MVC註解設置會話或全局屬性

理想情況下,我希望用戶名和全名出現在每個jsp頁面上。我正在考慮設置會話屬性。

我的控制器類:

@RequestMapping(value = "/menu", method=RequestMethod.POST) 
    public String addContact(Map<String, Object> map,@ModelAttribute("user") 
    User user, BindingResult result, SessionStatus status,HttpSession session) { 


session.setAttribute("DisplyName", u.getDisplayName()); 

我的JSP:

<div class="wlctxt">Welcome <%=session.getAttribute("DisplyName") %></div> 

,但我得到會議的空值屬性在這裏。

有沒有其他辦法可以達到這個目的?

+3

did you mean'user.getDisplayName()' – ant

+0

您是否檢查過調用getDisplayName()不返回null? –

回答

0

您不需要放入會話屬性DisplayName。你可以用每個請求來做。你有模型屬性將在請求中的推杆所以在JSP您可以訪問它:

<div class="wlctxt">Welcome <c:out value="${user.displayName}"/></div> 

在會議上把有很多trobelshouting你不必在意。如果您的用戶更改顯示名稱怎麼辦?你應該在會話中更新。或者更重要的是:更改一些訪問權限?在每個可能的地方進行會話更新都很容易。

我把會話用戶id由什麼我可以從內存緩存得到它(從DB expansibe從性能的角度讀),然後進行下一步:

@Controller 
public class SomeController { 

    @Autowired 
    private UserService userService; 

    @RequestMapping(...) 
    public String getSomePage(HttpServletRequest request, HttpSession session) { 
     Long userId = (Long) session.getAtribute("currentUserId"); 
     User user = userService.get(userId); 
     request.setAttribute("currentUser", user); 
    } 

在JSP中,你可以訪問它:

<div>Wellcome <c:out value="${currentUser.displayName}"/>!</div> 
相關問題