2014-07-11 10 views
2

Learn Java for Web Development을 읽고 책에서 코드 예제를 실행하려고합니다.렌더를 적용 할 수 없습니다.

Play Framework 코드 예제 (8 장)에 문제가 있습니다.

예외 :

"views.html.index에 (java.lang.String의)에 적용 할 수 없습니다 렌더링 (java.util.List에, play.data.Form)"

컨트롤러 클래스 :

final static Form<Book> bookForm = Form.form(Book.class); 

public static Result books(){  
    return ok(views.html.index.render(Book.all(),bookForm));    
} 

보기 - index.scala.html

@(books: List[Book], bookForm: Form[Book]) 

@import helper._ 

@main("books") { 

<h1>@books.size() book(s)</h1> 

<ul> 
    @for(book <- books) { 
     <li> 
      @book.label 

      @form(routes.Application.deleteBook(book.id)) { 
       <input type="submit" value="Delete"> 
      } 
     </li> 
    } 
</ul> 

<h2>Add a new book</h2> 

@form(routes.Application.newBook()) { 

    @inputText(bookForm("label")) 

    <input type="submit" value="Create"> 

} 

} 
,

편집 : 난 그냥 윈도우 8 시스템에서 처음부터 최신 플레이 버전을 설치

1), 순간은 2.3.1 플레이입니다. Play 프레임 워크를 수정하지 않았습니다. 그것은 Eclipse에서 처음으로 플레이 프로젝트

2) 전체 오류()이다 : The method render(String) in the type index is not applicable for the arguments (List<Book>, Form<Book>)

3) 내 다시 시도 할 때, 코드를 컴파일하고 나는

+0

다음 내용을 명확히하십시오. 1)이 예는 Play 2.2.0 용이며 질문은 Play 2.3.1에 관한 것입니다. 버전을 업그레이드하기 위해 어떤 수정을 했습니까? 2) 파일 이름과 오류 행을 포함한 전체 오류 메시지를 게시하십시오.3) 오류가'ApplicationTest' 파일에 있다면, 그 파일을 지우십시오; 이 프로젝트에서 올바르지 않은 기본 애플리케이션 템플리트에서 남은 것으로 보입니다. –

답변

3

비록 화면에 예약 양식을 볼 수 있습니다 당신이 특정 프로젝트 참조가 project/plugins.sbt 파일에이 줄 2.2.0 플레이 컴퓨터에 설치 2.3.1 플레이가 :

addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.0") 

그래서, sbt 다운로드 할 것입니다 재생 2.2.0을 사용하고 및 Play 버전이 컴퓨터의 다른 곳에 설치되어 있지 않습니다.

이클립스는 오류 메시지 외에 파일 이름과 줄 번호도 표시합니다. 오류 메시지를 클릭하면 해당 파일을 열어야합니다.

Content html = views.html.index.render("Your new application is ready."); 

이 기본 새 응용 프로그램 템플릿의 일부이며 수정해야하는데 :이 프로젝트에서,이 라인을 가지고있는, 아마도 test/ApplicationTest.java 파일입니다. index보기가 인수로 예상되므로 List<Book>, Form<Book>이고 String이 아니기 때문에이 특정 행은 컴파일되지 않습니다. 이것은 views/index.scala.html 파일의이 라인에 명시되어이 예제 프로젝트

@(books: List[Book], bookForm: Form[Book]) 

이 솔루션이 테스트는이 프로젝트에서 작동하지 않기 때문에 정말 값을 추가하지 이후, 파일 test/ApplicationTest.java을 삭제하는 것입니다. 프로덕션 프로젝트에서이 파일은 컴파일되어 테스트를 통과해야합니다.

해당 코드는 test 대상에 대해서만 실행되기 때문에 프로젝트가이 오류에도 불구하고 실행됩니다. Eclipse는 모든 대상에 대한 오류를 표시합니다.

+0

신속하고 완전한 응답을 주셔서 감사합니다. – Toren

관련 문제