2015-01-09 4 views
1

회사에서 요구하는 Play 1.x를 배우기 시작했고 Play 튜토리얼을 통해이 블로그 엔진을 만들었습니다. 부분 : https://www.playframework.com/documentation/1.2.x/guide4 그들이 그것을 유효성 검사 오류의 경우 문자열 render("Application/show.html", post);로 이름을 제공하여 템플릿을 렌더링하는 것이 좋습니다 왜render()와 render ("some template.html")의 동작이 다른 이유

public static void show(Long id) { 
    Post post = Post.findById(id); 
    render(post); 
} 

public static void postComment(Long postId, @Required String author, @Required String content) { 
    Post post = Post.findById(postId); 
    if (validation.hasErrors()) { 
     render("Application/show.html", post); // why not show(post.postId) ? 
    } 
    post.addComment(author, content); 
    show(postId); 
} 

? 같은 것을하기 위해 보이는 컨트롤러가 show(post.postId) 인 이유는 무엇입니까?

render ("Application/show.html", post)로 실행되는 경우에만 템플릿 catch 유효성 검사 오류가 발생합니다. show(post.postId)으로 실행하면 유효성 검증 오류가 템플리트에 표시되지 않습니다.

답변

0

postComment 메서드에서 유효성 검사 오류가 발생했습니다. show(post.postId)을 호출하면 HTTP 리디렉션이 효과적으로 트리거되므로 유효성 검사 오류가 손실됩니다 (서버가 상태를 저장하지 않기 때문에).