2013-08-09 3 views
0

loggedInUser를 테이블에 저장하려고합니다. 그래서 나는 session.But를 사용하여 loggedInUser에 접근하고 있는데,이 클래스에 대한 그러한 속성 세션이없는 오류가 발생했습니다. 도메인에서 세션을 사용하는 방법?Grails에서 도메인 클래스의 세션을 사용하는 방법

class GenderAudit { 


    String name 
    User doneBy 

    def GenderAudit(Gender gender,String operation) 
    { 
     this.name=gender.name 
     this.doneBy = session.loggedInUser 

    } 
} 

답변

4

도메인 클래스는 HTTP 계층에 대해 아무것도 모르는 상태 여야합니다. 해당 데이터에 액세스 할 수있는 서비스 또는 컨트롤러에서 값을 설정하십시오.

또한 생성자를 정의하는 것은 괜찮지 만 Hibernate에 새로운 인수를 생성하고 setter를 호출하기 때문에 인수가없는 생성자를 정의해야합니다. 일반적으로 Groovy가 추가 한 맵 생성자는 매우 편리하기 때문에 Grails에서 매개 변수화 된 생성자를 사용하지 않습니다. 당신의 컨트롤러 또는 서비스

난 버트 백 위드에 동의
new GenderAudit(name:gender.name, doneBy: session.loggedInUser).save() 

에서

+0

하지만이 클래스의 생성자를 유지 관리해야합니다. 이 RequestContextHolder.currentRequestAttributes(). 세션을 사용하여 다른 게시물에서 말한 것처럼.이 잘 작동합니다. 버트, 정말 고마워. – Visme

2

코드를 사용합니다. Domain 클래스에서 모든 생성자를 제거하십시오.

관련 문제