2011-10-17 4 views
4

나는 CRUD 모듈에 의해 생성 된 템플릿을 커스터마이징하고 있으며 템플릿의 커스텀 데이터를 저장하기 위해 save 메소드를 오버라이드해야한다. 나는 모든 데이터를 저장할 수 있습니다,하지만 난 렌더링 작업을 호출 할 때 :재생! 컨트롤러에서 render() 액션을 호출하는 프레임 워크

render("Users/show.html", user); 

을 나는 템플릿 NullPointerException이 개체를 얻을 :

enter image description here

나는 확실히 때문에를 통해 올바른 사용자 개체를 전달 해요 내가 이것을 실행할 때 :

System.out.println(user.toString()); 
//render("Users/show.html", user); 

그것은 내 사용자를 콘솔에 쓴다.

도움이 될 것입니다.

Controller View

플레이! 1.2.3

+0

@After 주석이있는 메소드에서 사용자 객체를 전달합니까? 다른 메서드에서 renderArgs의 사용자 객체를 전달하면 템플릿에 전달 된 값을 덮어 쓸 수도 있습니다. – emt14

+0

컨트롤러 코드를 공유 할 수 있습니까? – mericano1

답변

6

컨트롤러는

render("Users/show.html", user); 

렌더링되지만 템플릿의 요소의 이름 객체입니다. 사용자이어야합니다.

침전물의 원래 템플릿 COMMENT ON

업데이트 CRUD중인 엔티티로 추상화 "개체"를 사용한다. 당신이 컨트롤러의 소스 코드를 확인하는 경우는 말한다 :

  1. 는이 호환성을 깨는 템플릿을 수정 :

    //ignoring case when template is not found, alternative also uses object 
    render(type, object); 
    

    이 두 가지 옵션이 있다는 것을 의미한다. 전체 코드를 볼 수는 없지만 시나리오에있는 것처럼 보이지는 않습니다 (따라서 여전히 옵션 일 수 있습니다)

  2. 컨트롤러를 수정하여 템플릿에 보내는 개체를 변경했습니다. 그것은 당신의 시나리오 인 것 같습니다. 따라서 사용자을 사용하거나 사용자의 이름을 ~ 으로 바꿉니다.
+0

CRUD 모듈에 의해 생성 된 템플릿을 오버라이드하고 있습니다. 객체를 일반 이름으로 사용한다고 생각합니다. 내가 제안한대로 사용자에게 변경하려고했는데 오류가 발생해도 아무런 효과가 없습니다. – Martinffx

+0

는 덧글을 올리겠습니다. –

+1

Thanks! 두 번째 옵션은 문제를 해결했지만 다른 문제를 일으킨 것으로 보입니다. 양식의 모든 정보가 저장되기 전에 더 이상 추가하려고하는 의무를 저장하지 않는 것처럼 보이고 렌더링 함수를 호출하려고 할 때 템플릿이 넘어집니다. 이제는 모든 데이터를 저장하는 것 같지 않고 페이지를 렌더링하고 있지만 새로운 질문에서이 질문을해야한다고 생각합니다. 고맙습니다. – Martinffx