2016-05-16 25 views
0

ユーザー名、電話番号、ドメインなどのユーザーセッションを保持するクラスがあります。すべての意図や目的のために、これは、そのベースがどのように見えるかです:Grails 3外部メソッドの呼び出し

public class User { 

    private String username; 
    private String domain; 
    private List<GrantedAuthority> authorities = new ArrayList<>(); 

    public void addRole(final String role) { 
     authorities.add(new SimpleGrantedAuthority(role)); 
    } 

    public List<GrantedAuthority> getAuthorities() { 
     return authorities; 
    } 

} 

私は文脈からこのユーザーを抽出し、その属性をレンダリングするクラスを持っています。これは、このクラスがどのように見えるかです:

class UserSession { 

    def getLoggedInUser() { 
     User user = SecurityContextHolder.getContext().getAuthentication().getPrincipal() 
     println("################### we are gonna return " + user) 
     return user.domain + "\\" + user.username 
    } 

} 

私が午前問題は、私がメインのレイアウトGSP(ベーステンプレート)からgetLoggedInUserを呼び出す方法がわからないということです。

私はこれまでのところ、このような何かをやって試してみました:

<g:set var="userSession" bean="UserSession"/> 
<span id="userInfo">${userSession.loggedInUser}</span> 

しかし、ページが空白のままにして、メソッドが呼び出されることはありません。私の質問は次のとおりです。どのコントローラでもなく、特定のBean /クラスからアクセスできるベースレイアウトgspからメソッドを呼び出すにはどうすればよいですか?

+0

getLoggedInUserメソッドを静的にしようとしましたか? Btw、春のセキュリティを使用していませんか? sct999

+0

ああ、その秒:タグは魅力的に働いています。ありがとう!私はあなたが答えを書く必要があると思うので、私はそれを答えるとしてマークすることができます – angryip

+0

私はaswerとしてそれを追加:) – sct999

答えて

1

getLoggedInUserメソッドを静的にしようとしましたか?おそらくそれはうまくいくでしょう。

Btw、春のセキュリティを使用していませんか?あなただけでもできます<sec:loggedInUserInfo field="username" />

関連する問題