2014-07-19 4 views
1

Я новичок на Play Framework и я пытаюсь разработать образец приложения Javaзатмение показывает ошибку на визуализации() в PLAY2

я создал новый HTML-страницу test.html

в контроллерах это работает если мы просто возвращаем результат в виде строки, т.е. возвращаем ok («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/controller/Application.java: 15: render (java.lang.String, play.api.temp lates.Html) в views.html.test нельзя применить к()

[error] return ok (test.render());

[ошибка] (компиляции: компилировать) Javac возвращается ненулевой код выхода

вот мой файл test.html

@(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 выглядит скорее как более общий шаблон макета. Я бы создал отдельный файл для генерации контента вместо передачи его непосредственно с контроллера.

content.html

@(title: String) 

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

И в контроллере это будет выглядеть следующим образом.

public static Result test(){ 
    String title = "test title"; 
    return ok(content.render(title)); 
} 
Смежные вопросы