1

我正在使用带有 Grails 的 Spring 安全性。我的用户有用户名,它还引用了另一个名为卖方的域对象。

// Every user will usually be associated with a Seller
static belongsTo = [seller: Seller];

在 GSP 中,我可以通过以下方式显示登录用户的用户名:

<sec:ifLoggedIn>Hello <sec:username/> </sec:ifLoggedIn>

但我还想显示来自用户卖家对象的属性。我尝试:

<sec:ifLoggedIn>Hello <sec:username/> <sec:seller.name/> </sec:ifLoggedIn>

但这给出了:

Tag [seller.name] does not exist. No tag library found for namespace: sec
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)

有任何想法吗?

4

2 回答 2

1

虽然前面的答案更灵活,但如果您只想显示登录的用户名,您可以尝试以下任一标签:

<sec:ifLoggedIn>Hello ${sec.username} </sec:ifLoggedIn>

或者

<sec:ifLoggedIn>Hello ${sec.loggedInUserInfo(field:'username')} </sec:ifLoggedIn>
于 2013-09-01T14:26:49.370 回答
1

您可以创建自己的 taglib 来呈现当前用户的名称,例如

class TestTagLib {
    static final namespace = 'myTag'

    def name = { attrs ->
        User user = springSecurityService.currentUser as User
        out << user.name
    }
}

并在要显示名称的地方使用它

<sec:ifLoggedIn>Hello <sec:username/> <myTag:name/> </sec:ifLoggedIn>
于 2013-09-01T05:59:38.317 回答