2013-01-08 4 views
0

Play! 프레임 워크 20 자바 프로젝트 및보기에 양식을 전달하는 문제가 있습니다.템플릿에 채워진 양식 렌더링

Filter filter = new Filter(); 
//add some state to the filter object 
Form<Filter> filterForm = form(Filter.class).fill(filter); 
Logger.info("FilterForm: " + filterForm.get().toString()); // So far so good 
return ok(filterView.render(filterForm)); 

그리고 템플릿 : 컨트롤러에서 나는지도를 통해 필터 상태를 채울 경우

@filterForm.hasErrors() // renders false 
@filterForm.data().isEmpty() // renders true!! 
@* @filterForm.get().toString() *@ throws an Exception: No Value 

내가 같은 오류가 나는 다음과 같은 코드를 컨트롤러에서

:

filterForm = filterForm.bind(aMapWithTheState); 

이 동작은 코드에서 필터를 채울 때만 적용됩니다. 내가 다른 방법으로 filterForm.bindFromRequest() 할 때 모든 작동합니다.

감사합니다.

+1

더 많은 코드를 제공 할 수 있습니까? fill()을 사용하면 hasErrors()는 유효성 검사가 아직 수행되지 않았기 때문에 false를 반환하고 data()는 Map이므로 채워지지 않았습니다. 그러나 get()은 반환해야합니다. 귀하의 필터 개체 그래서 거기에 무슨 일이 잘 모르겠어요. – estmatic

+0

감사합니다. @estmatic, 해결되었습니다. 내 대답을 참조하십시오. –

답변

0

해결.

이전에했던 상태로지도를 사용하여 양식의 bind 방법을 사용해야했습니다. documentation는 속성 이름은 필수 아니라는 것을 말한다에도 불구하고

Map<String, String> formState = new HashMap<String, String>(); 
formState.put("name", name); 
formState.put("birthDate", birthDate); 
formState.put("address", address); 

filterForm = filterForm.bind(formState, "name", "birthDate", "address"); 

:하지만 올바른 방법은 속성의 이름을 전달하는 것입니다.

관련 문제