2016-05-16 74 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" />