Play Framework无法正确传递列表进行查看

时间:2014-03-24 04:58:49

标签: templates intellij-idea playframework-2.0

我是Play 2 Framework的新手。

我有以下代码:

import play.*;
import play.mvc.*;
import play.data.*;
import static play.data.Form.*;

import models.*;
import views.html.*;

public class Application extends Controller{
    public static Result index(){
        return ok(
                views.html.index.render(Task.find.all())
        );
    }
}

我基本上试图填充Task的内容,将其传递给我的视图(“index.html”)。

但是我在intelliJ

上一直收到以下错误

render无法应用于java.utils.List

任何人都可以帮我这个吗?谢谢

修改

我尝试过这里给出的解决方案:

Play Framework 2.2.1 - Compilation error: "method render in class index cannot be applied to given types;"

没有运气。

编辑2 我试过这个:

<!-- Line below specify paramters required from controller -->

@main("Dashboard") {
    <header>
        <hgroup>
            <h1>Dashboard</h1>
            <h2>Tasks over all projects</h2>
        </hgroup>
    </header>
}

这个

@import models.Task
@(tasks: List[Task])

@main("Dashboard") {
    <header>
        <hgroup>
            <h1>Dashboard</h1>
            <h2>Tasks over all projects</h2>
        </hgroup>
    </header>
}

而且:

@import models.Task
@(tasks: List[models.Task])

@main("Dashboard") {
    <header>
        <hgroup>
            <h1>Dashboard</h1>
            <h2>Tasks over all projects</h2>
        </hgroup>
    </header>

然而,它仍然给我同样的错误 这是:

未找到:值任务,如果我将其追溯到控制器,则会抛出错误,说明render()无法接受List的值类型。

编辑3:

我修改了我的代码如下

我的控制者

public static Result index(){

    List<User> users = User.find.all();

    return ok(
            views.html.index.render(users)
    );
}

和我的观点:

@(users: java.util.List) /* You could also use @(users: List) if you want */

@main("Dashboard") {
    <header>
        <hgroup>
            <h1>Dashboard</h1>
            <h2>Tasks over all projects</h2>
        </hgroup>
    </header>

    <section>
    </section>
}

这次我得到以下(编译)错误:

trait List takes type parameters 

1 个答案:

答案 0 :(得分:2)

解决了......

事实证明,这个过程并不像我预期的那么直接。

这就是我做的

我的控制器:

/* Do not forget to import the necessary library */
public class Application extends Controller{
    public static Result index(){

        List<User> users = User.find.all();
        return ok(
                views.html.index.render(users)
        );
    }
}

我的观点:

@(users: List[models.User])

@main("Dashboard") {
    <header>
        <hgroup>
            <h1>Dashboard</h1>
            <h2>Tasks over all projects</h2>
        </hgroup>
    </header>

    <section>
        @for(user <- users){
            <p>@user.name (@user.email)</p>
        }
    </section>
}