【问题标题】:Multiple domain class binding in Grails controller actionGrails 控制器操作中的多个域类绑定
【发布时间】:2014-05-07 22:04:39
【问题描述】:

使用 grails 2.3.7。我正在尝试使用 Grails 控制器操作参数绑定。如果我有这个代码:

class TestController {
    def test(MyClass1 myClass1) {
        log.debug(myClass1)
    }
}

myClass1 使用 http://locahost:8080/myapp/test/test/1 从 DB 中正确获取。 但现在我想通过两个域类。我试过这段代码:

class TestController {
    def test(@RequestParameter('obj1') MyClass1 myClass1, 
             @RequestParameter('obj2') MyClass2 myclass2) {

        log.debug(myClass1)
        log.debug(myClass2)
    }
}

并且使用http://localhost:8080/myapp/test/test?obj1.id=1&obj2.id=3 访问,什么都没有获取。这是在控制器操作中使用数据绑定的正确方法吗?或者这是不可能的?

提前致谢。

【问题讨论】:

    标签: grails data-binding


    【解决方案1】:

    你可以在你的控制器中使用这个和其中之一:

    // binds request parameters to a target object
        bindData(target, params)
        // exclude firstName and lastName
        bindData(target, params, [exclude: ['firstName', 'lastName']])
    
        // only use parameters starting with "author." e.g. author.email
        bindData(target, params, "author")
        bindData(target, params, [exclude: ['firstName', 'lastName']], "author")
    
        // using inclusive map
        bindData(target, params, [include: ['firstName', 'lastName']], "author")
    
    def User bindUser(params)  {
            def User user = new User()
            def Human human = new Human() 
    
               bindData(user, params["user"])
               bindData(human, params["humna"])
             if(!human) 
             human.save(failOnError:true) 
             if(!user)
             user.save(failOnError:true)
            }
             //alloha~
        } 
    

    【讨论】:

    • 这很有用,但并不是我所要求的解决方案。如果 Grails 可以自动完成,我的意图是使代码尽可能清晰和标准。也许,根本不可能。
    • 不可能是什么?你需要一个清晰的代码吗?和 grails 做一个绑定..如果你不想要那个呢?什么是不可能的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多