我正在学习本教程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
语句进行循环。
提前致谢。
答案 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。*。因此不需要使用完全限定的类名。