복붙노트

[SPRING] Grails에서 컨트롤러 액션간에 객체를 전달하는 가장 좋은 방법

SPRING

Grails에서 컨트롤러 액션간에 객체를 전달하는 가장 좋은 방법

내 웹 응용 프로그램의 다른보기를 열어 특정 객체에 대한 정보를 표시하는 링크가 필요합니다. Grail에서 컨트롤러 액션간에 객체를 전달하는 가장 좋은 방법은 무엇입니까?

해결법

  1. ==============================

    1.액션은 체인 컨트롤러 메소드를 사용하여 체인화 할 수 있습니다.

    액션은 체인 컨트롤러 메소드를 사용하여 체인화 할 수 있습니다.

    체인을 사용하면 한 동작에서 다음 동작으로 모델을 유지할 수 있습니다.

  2. ==============================

    2.(Late to the party, but ...) 나는 Grails 2.4.4를 사용하고 있는데, 아래에서 그렇게 할 수있다.

    (Late to the party, but ...) 나는 Grails 2.4.4를 사용하고 있는데, 아래에서 그렇게 할 수있다.

    def usernameLogin() {
      SecurityToken securityToken = authService.loginWithUserPass(params.user, params.pass)
      chain action: 'afterLogin', model: [securityToken: securityToken]
    }
    
    def ssoLogin() {
      SecurityToken securityToken = authService.ssoLogin(params.remoteUser, params.key)
      chain action: 'afterLogin', model: [securityToken: securityToken]
    }
    
    def afterLogin() {
      SecurityToken securityToken = (SecurityToken) chainModel['securityToken']
      if (securityToken.valid) {
        forward action: 'loggedInRedirect'
      }
      else {
        forward action: 'loginFailed'
      }
    }
    

    희망이 도움이됩니다.

  3. ==============================

    3.이전 답변은 불완전합니다. 그래서 저는 그것들을 필자의 의견과 함께 편집하여보다 명확하게 보여주고 있습니다.

    이전 답변은 불완전합니다. 그래서 저는 그것들을 필자의 의견과 함께 편집하여보다 명확하게 보여주고 있습니다.

    두 가지 옵션이 있습니다.

    앞의 경우와 달리 요청 전달은 기존 세션을 재사용하므로 지연로드 문제가 발생하지 않습니다.

    보시다시피 두 구문 모두 거의 동일합니다. 그러나 위에 언급 된 문제로 인해 문제의 요구 사항에 따라 요청 전달을 선호해야합니다. 또 다른 중요한 세부 정보는 페이지로드시 / 페이지로드 후 주소 표시 줄에서 본 URL과 관련됩니다. 요청을 전달하면 페이지 URL이 유지되며 작업을 연결하면 페이지 URL이 최신 작업의 URL로 변경됩니다.

  4. from https://stackoverflow.com/questions/9751211/best-way-to-pass-objects-between-controller-actions-in-grails by cc-by-sa and MIT license