我正在使用Grails的Spring安全性。我的用户具有用户名,并且还引用了另一个名为Seller的域对象。
// 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)
有什么想法吗?
答案 0 :(得分: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>
答案 1 :(得分:1)
虽然之前的答案更灵活,但如果您只是想显示已登录的用户名,可以尝试使用以下任一标签:
<sec:ifLoggedIn>Hello ${sec.username} </sec:ifLoggedIn>
或
<sec:ifLoggedIn>Hello ${sec.loggedInUserInfo(field:'username')} </sec:ifLoggedIn>