0

我目前正在从事 Grails 项目,并想知道从 Spring Security 域模型中显示对象的选择列表的最佳方式:

我知道如何创建一个选择列表,但我只想找出 grails 中使用该域中的对象填充它的最佳方法。我正在考虑调用类似“ user.list(params) ”之类的东西,然后将其传递给视图,然后我可以访问该域中定义的对象,但我不能 100% 确定这是最好的方法还是可以那样做?

提前致谢

编辑.....

我在控制器中有以下自定义模型设置:

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)

有人可以帮忙吗?谢谢

4

2 回答 2

0

你的方法看起来绝对正确。在您填充模型的控制器操作中:

def listUsers = {
    [ 'users': Users.list( params ) ]
}

并在视图中使用模型填充列表框:

<g:select name="users" from="${ users }" />

您的问题看起来很简单,所以我希望,我正确地理解了问题背后的想法:-)

于 2012-10-08T18:37:21.313 回答
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()}" />

谢谢

于 2012-10-09T12:22:45.840 回答