Grails 3调用外部方法

时间:2016-05-16 13:35:10

标签: grails

我有一个包含用户会话的课程,例如用户名,电话号码和域名。出于所有意图和目的,这就是它的基础:

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 /类访问?

1 个答案:

答案 0 :(得分:1)

您是否尝试将getLoggedInUser方法设为静态?可能它会起作用。

是的,不使用弹簧安全吗?你可以<sec:loggedInUserInfo field="username" />