我目前正在开发Grails项目,并想知道从Spring Security域模型中显示选择对象列表的最佳方法:
我知道如何创建一个选择列表,但我只是想在grails中找到最好的方法来填充该域中的对象。我正在考虑调用“ user.list(params)”这样的东西,然后将其传递给视图,然后我可以访问该域中定义的对象,但我不是100%肯定是最好的方式还是可以这样做?
提前致谢
EDIT .....
我在控制器中设置了以下自定义模型:
class UserModel {
String username
String firstName
String lastName
def email = User.email.list()
String[] emails = email
static constraints = {
username blank: false
firstName blank: false
lastName blank: false
}
}
然后,当初始化此视图的索引页面时,我将其传递给它:
[model: new UserModel(copy)]
最后在视图上我有这个:
<g:select name="emails" from="${model.emails}"
现在,当我运行应用程序时,我收到此错误:
No signature of method: grails.plugins.springsecurity.ui.UserModel.propertyMissing() is applicable for argument types: () values: [] Possible solutions: propertyMissing(java.lang.String)
任何人都可以帮忙吗?感谢
答案 0 :(得分:0)
你看起来绝对正确。在控制器操作中,您填充模型:
def listUsers = {
[ 'users': Users.list( params ) ]
}
并在视图中使用该模型填充列表框:
<g:select name="users" from="${ users }" />
你的问题看起来非常简单,所以我希望,我已经正确地理解了这个问题: - )
答案 1 :(得分:0)
我一直在努力工作并为我遇到的问题实施了解决方案,一切正常。以下是我在控制器中查看相关视图的内容:
def index = {
[userList: Users(), command: new RegisterCommand(copy)]
}
protected List Users() {
lookupUserClass().list()
}
List Users从扩展类调用另一个函数,如下所示:
protected Class<?> lookupUserClass() {
grailsApplication.getDomainClass(lookupUserClassName()).clazz
}
然后,此视图呈现我想要在选择列表中显示的项目列表:
<g:select name="emails" from="${userList.emails}" />
如果您正在寻找独特的价值观,也可以这样做:
<g:select name="emails" from="${userList.emails.unique()}" />
由于