我正在学习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
答案 0 :(得分:2)
由于您使用@
启动了表达式,因此您不需要在productForm
之前使用它,所以
@helper.inputText(productForm("ean"), '_label -> "EAN")
应该为你做的伎俩。
Scala模板使用@作为单个特殊字符。每次 遇到这个字符,它表示动态的开始 声明。您无需显式关闭代码块 - 动态语句的结尾将从您的代码中推断出来: