Play Framework初学者。编译时出现Scala.html错误

时间:2017-01-28 12:27:28

标签: html scala playframework-2.0

我正在学习Play框架,我正在学习CRUD控制器。我想创建一个表单来添加新帖子,但我有一个编译错误。由于我是scala的新手,我无法弄清楚错误。

@(productForm: Form[Product])
@import helper._
@import helper.twitterBootstrap._

@main("Product Form"){
<h1>Product Form</h1>

@helper.form(action = routes.Products.save()){
    <fieldset>
        <legend>Product (@productForm("name").valueOr("New")) </legend>
        @helper.inputText(@productForm("ean"), '_label -> "EAN")
        @helper.inputText(@productForm("name"), '_label -> "Name")
        @helper.textarea(@productForm("description"), '_label -> "Description")
    </fieldset>

    <input type="submit" class="btn btn-primary" value="Save">
    <a class="btn" href="@routes.Products.index()">Cancel</a>
}
}

错误是:

/Users/andrei/Desktop/PlayFramework/app/views/products/details.scala.html:11: illegal start of simple expression
[error]             @helper.inputText(@productForm("ean"), '_label -> "EAN")

另一个问题:我在类中定义了一个私有的静态final变量,但是我得到了一个错误。我认为这是因为我正在从2014年的一本书中学习框架而被弃用的库

import play.api.data.Form; 
import play.api.FormFactory;
public class Products extends Controller {

Form<Product> productForm = formFactory.form(Product.class);

错误:

cannot find symbol
symbol:   variable formFactory
location: class controllers.Products

我找到FormFactory的文档来源: https://www.playframework.com/documentation/2.5.x/JavaForms

1 个答案:

答案 0 :(得分:2)

由于您使用@启动了表达式,因此您不需要在productForm之前使用它,所以

@helper.inputText(productForm("ean"), '_label -> "EAN")

应该为你做的伎俩。

  

Scala模板使用@作为单个特殊字符。每次   遇到这个字符,它表示动态的开始   声明。您无需显式关闭代码块 -   动态语句的结尾将从您的代码中推断出来: