值“属性”不是“模型”的成员

时间:2013-04-03 23:46:44

标签: java view playframework playframework-2.0 playframework-2.1

我正在学习本教程http://www.playframework.com/documentation/2.1.1/JavaTodoList之后Play Framework的开发流程。

但是我在index.scala.html视图中收到此编译错误:

  

“值描述不是产品的成员”

这是我的产品型号:

package app.models;

import java.util.*;
import javax.validation.*;
import play.data.validation.Constraints.*;

/**
 * Product.
 */
public class Product
{
    public int id;
    public String name;
    public String description;
    public String dimensions;
    public double price;

    public static List<Product> all()
    {
        return new ArrayList<Product>();
    }

    public static void create(Product product)
    {
        return;
    }

    public static void delete(Long id)
    {
        return;
    }
}

以下是视图的代码:

@(products: List[Product], productForm: Form[Product])

@import helper._

@main("ezbuy") {
    <h1>@products.size() product(s)</h1>

    <ul>
        @for(product <- products) {
            <li>
                @product.description

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

    <h2>Add a new product</h2>

    @form(routes.Application.newProduct()) {
        @inputText(productForm("label")) 

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

我只是没有找到问题所在,因为我已经在视图顶部声明了产品列表,并使用@for语句进行循环。

提前致谢。

1 个答案:

答案 0 :(得分:2)

有一个Scala类scala.Product(http://www.scala-lang.org/api/current/index.html#scala.Product)。 Scala会自动从scala包中导入所有内容。我认为你有那个课而不是app.models.Product。

使用完全限定的类名:

@(products: List[app.models.Product], productForm: Form[app.models.Product])

如果将Product直接放入模型包中,则不会发生该错误,因为默认情况下会在Play的Scala模板中导入models。*。因此不需要使用完全限定的类名。