【问题标题】:Dropdown/Select list of Grails SpringSecurity property?下拉/选择 Grails SpringSecurity 属性的列表?
【发布时间】:2012-10-08 15:23:44
【问题描述】:

我目前正在从事一个 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)

有人可以帮忙吗?谢谢

【问题讨论】:

    标签: grails spring-security selectlist domain-model


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 我已经有一个模型被传递给视图,我假设它不可能将另一个模型传递给视图,只有一个我没有的映射模型
    • 我需要将用户电子邮件列表添加为该自定义模型中的字符串 [],然后当整个模型传递到视图时,我从 model.e 填充 slect 列表-邮件。我该怎么做?
    【解决方案2】:

    我一直在努力解决这个问题,并针对我遇到的问题实施了解决方案,并且一切正常。以下是我在控制器中针对相关视图的内容:

    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()}" />
    

    谢谢

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多