2014-07-19 1 views
1

와 마찬가지로 play2에서 렌더링에 오류()를 표시하고 난 컨트롤러에일식 내가 플레이 프레임 워크에 새로운 오전

는 작업입니다 test.html를 나는 새 HTML 페이지를 생성 한 샘플 자바 응용 프로그램을

을 개발하기 위해 노력하고 있어요 우리가 단순히 문자열의 형태로 결과를 반환한다면, 즉 ok 반환 ("hello world")하지만 단순히 모든 스타일/텍스트의 형식을 지정하고 UI에서 "hello world"를 표시합니다.

public static Result test() { 
     return ok("hello world"); 
     } 

// 작업을 잘

하지만 난이

public static Result test(){ 
     return ok(test.render()); 
     } 

//주는 오류는 오류

다음 제공

을 시도 할 때 오류를 제공

[오류]/opt/ahsen/play-2.2.3/testapp/app/controllers/Application.java : 15 : render (java.lang.String, play.api.temp) lakes.Html)을()에 적용 할 수 없습니다.

[오류] return ok (test.render());

[오류] (컴파일 : 컴파일) 여기

내 인 test.html 파일입니다 javac의 0이 아닌 종료 코드를 반환

@(title: String)(content: Html) 

    <!DOCTYPE html> 

    <html> 
    <head> 
    <title>@title</title> 
    <link rel="stylesheet" media="screen" href="@routes.Assets.at("stylesheets/main.css")"> 
    <link rel="shortcut icon" type="image/png" href="@routes.Assets.at("images/favicon.png")"> 
    <script src="@routes.Assets.at("javascripts/jquery-1.9.0.min.js")" type="text/javascript"> 
    </script> 
    </head> 
    <body> 
     @content 
    </body> 
</html> 

제발 도와

답변

2

귀하의 test.html를 템플릿은 두 개의 매개 변수

이 필요
@(title: String)(content: Html) 

그래서 컨트롤에 템플릿에 전달해야합니다. 어

public static Result test(){ 
    String title = "test title"; 
    Html content = // create content 
    return ok(test.render(title, content)); 
} 

더 나은 솔루션 인 test.html이 더 일반적인 레이아웃 템플릿으로 오히려 보이는

. 콘텐트를 생성하기 위해 컨트롤러에서 직접 전달하는 대신 별도의 파일을 생성합니다.

@(title: String) 

@test(title){ 
    <span>this is the content</span> 
} 

그리고 그것과 같을 것이다 컨트롤러의 content.html

.

public static Result test(){ 
    String title = "test title"; 
    return ok(content.render(title)); 
} 
관련 문제