2014-03-28 8 views
2

grails 사용하기 2.3.7. 내가 Grails 컨트롤러 작업 매개 변수 바인딩을 사용하려고합니다. 이 코드가있는 경우 :Grails 컨트롤러 액션에서 다중 도메인 클래스 바인딩

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

myClass1는 http://locahost:8080/myapp/test/test/1를 사용하여 DB에서 제대로 가져온 것입니다. 하지만 이제는 두 개의 도메인 클래스를 전달하려고합니다. 아무것도 가져온 없다, http://localhost:8080/myapp/test/test?obj1.id=1&obj2.id=3를 사용

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

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

그리고 액세스 : 나는이 코드를 시도했습니다. 컨트롤러 작업에서 데이터 바인딩을 사용하는 것이 올바른 방법입니까? 아니면 불가능한가요?

감사합니다. 미리 감사드립니다.

답변

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~ 
    } 
+1

이 유용하지만, 정확히 내가 요구하고있는 무슨에 대한 해결책이 아니다. Grails가 자동으로 코드를 수행 할 수 있다면 가능한 한 코드를 명확하고 표준으로 유지해야합니다. 아마, 그것은 불가능합니다. – okelet

+0

다음, 당신은 commandobjects에 대해 읽을 필요가 있을까요? – danielad

+0

무엇을 할 수 없습니까? 명확한 코드가 필요합니까? 그리고 grails는 구속력이 있습니다. 당신이 그걸 원하지 않는다면? 불가능한 것은 무엇입니까? – danielad

관련 문제