2017-01-28 10 views
1

Я изучаю структуру воспроизведения, и я изучаю контроллеры CRUD. Я хочу создать форму для добавления новых сообщений, но у меня есть ошибка компиляции. Поскольку я новичок в scala, я не могу понять ошибку.Play Framework новичок. Ошибка Scala.html в компиляции

@(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") 

другая проблема: я определяю в классе собственной статической окончательной переменной, но я получаю сообщение об ошибке. Я думаю, что это из-за устаревшей библиотеки, как я изучаю структуру с 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

ответ

2

С тех пор, как вы начали выражение с @, вам не нужно использовать его до productForm, поэтому

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

должен сделать трюк для вас.

The Scala template uses @ as the single special character. Every time this character is encountered, it indicates the beginning of a dynamic statement. You are not required to explicitly close the code block - the end of the dynamic statement will be inferred from your code:

+0

Спасибо! это решило мою проблему! Можете ли вы проверить, пожалуйста, вопрос? Я обновил вопрос и добавил еще одну проблему, и, может быть, вы могли бы помочь решить эту проблему: –

+0

@xzayt, вы должны добавить еще один вопрос. не добавлять в один и тот же – Mysterion