首页 > 解决方案 > 如何在 Play 框架中的 Java 代码中修复“不明确的方法调用”

问题描述

我正在关注 youtube 上的 Java 播放框架教程(#13),我坚持使用 BookStore 应用程序的索引方法。自从我得到:“模棱两可的方法调用。index 中的 render(Set,) 和 index$ 中的 render(Set) 都匹配”。

我试图更改列表的设置,但我得到的按摩基本上与列表有关。

public class BooksController extends Controller {

    public Result index(){
        Set<Book> books = Book.allBooks();

        return ok(index.render(books));  //<--------- the error
    }        
}

public class Book {

    public Integer id;
    public String title;
    public Integer price;
    public String author;

    public Book(Integer id, String title,Integer price, String author){
        this.id = id;
        this.title = title;
        this.price = price;
        this.author = author;
    }

    public static Set<Book> books;

    static {
        books = new HashSet<>();
        books.add(new Book(1, "Java", 20, "ABC"));
        books.add(new Book(2,"C++", 30, "XYZ"));
    }

    public  static Set<Book> allBooks(){
        return books;
    } 
}

标签: javaplayframework

解决方案


您收到此错误是因为indexfromviews.html.index.render和您index()在 BooksController 中的方法具有相同的名称,并且编译器混淆了使用什么方法。例如,只需将您的渲染方法的名称更改为其他名称,您booksIndex()的问题就会消失。

public class BooksController extends Controller {

    public Result booksIndex(){
        Set<Book> books = Book.allBooks();

        return ok(index.render(books));
    }        
}

PS不要忘记更改您的路线文件后


推荐阅读