2016-05-16 75 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> 

但是,页面是空白和方法不会被调用。我的问题是:如何从基础布局gsp中调用一个方法,而不是在每个控制器中调用一个可以从特定的bean/class访问的方法?

+0

你是否试图让getLoggedInUser方法是静态的? 顺便说一句,不使用弹簧安全? 你可以做 sct999

+0

啊,那秒:标签就像一个魅力一样工作。谢谢!我想你应该写答案,所以我可以将它标记为已回答 – angryip

+0

我将它添加为aswer :) – sct999

回答

1

您是否试图使getLoggedInUser方法为静态?可能它会工作。

顺便说一句,不使用弹簧安全?你可以做<sec:loggedInUserInfo field="username" />