2012-05-07 19 views
0

Spring MVCを使用してJavaで記述された簡単なアプリケーションがあります。 Credentialsクラスには、ログイン時に提供されるユーザ名&のパスワードが含まれています。Spring 3 MVC Annotationsを使用してセッション属性またはグローバル属性を設定する方法

理想的には、すべての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> 

しかし、私は、ここでセッション属性のNULL値を取得します。

これを達成する他の方法はありますか?

+3

あなたは 'user.getDisplayName()'を意味しましたか? – ant

+0

getDisplayName()の呼び出しがnullを返さないことを確認しましたか? –

答えて

0

セッション属性DisplayNameを入力する必要はありません。あなたはすべての要求でそれを行います。あなたが気にする必要がありtrobelshoutingたくさんある

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

は、セッション中に置く:あなたは、モデルは、あなたがそれにアクセスすることができ、JSPでのように、それは、要求にパットされる属性を持っています。あなたのユーザーが表示名を変更するとどうなりますか?セッション中に更新する必要があります。それ以上の批判:いくつかのアクセス権の変更?可能な限りの場所で、セッションでのアップデートを簡単に行うことができます。

私は次のメモリキャッシュ内からそれを得る(パフォーマンスの観点から、DBのexpansibeからの読み取り)と何ができるかによって、セッションのユーザーIDに置く:JSPで

@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); 
    } 

をあなたがそれにアクセスすることができます。

<div>Wellcome <c:out value="${currentUser.displayName}"/>!</div> 
関連する問題