gpt4 book ai didi

scala - 在 Products.scala 中找不到 flash

转载 作者:行者123 更新时间:2023-12-04 10:04:04 24 4
gpt4 key购买 nike

我目前正在阅读 Peter Hilton 的“Play for Scala”。我刚刚结束了第一个示例 Play 应用程序,您可以在其中构建一个回形针目录。

但是,在编译时,我收到一个编译错误,告诉我尚未找到值“flash”。通常这是我犯的一个简单错误,但鉴于我只是按照书中的指南进行操作,我无法确定修复方法。

错误位于“NewProduct”函数的第 52 行和第 53 行

这是代码:

package controllers

import play.api.mvc.{Action, Controller}
import models.Product
import play.api.data.Form
import play.api.data.Forms.{mapping, longNumber, nonEmptyText}
import play.api.i18n.Messages
import play.api.mvc.Flash

object Products extends Controller {

private val productForm: Form[Product] = Form(
mapping(
"ean" -> longNumber.verifying(
"validation.ean.duplicate", Product.findByEan(_).isEmpty),
"name" -> nonEmptyText,
"description" -> nonEmptyText
)(Product.apply)(Product.unapply)
)

def list = Action {implicit request =>
val products = Product.findAll

Ok(views.html.products.list(products))
}

def show(ean: Long) = Action {implicit request =>
Product.findByEan(ean).map {product =>
Ok(views.html.products.details(product))
}.getOrElse(NotFound)
}

def save = Action { implicit request =>
val newProductForm = productForm.bindFromRequest()

newProductForm.fold(
hasErrors = {form =>
Redirect(routes.Products.newProduct()).
flashing(Flash(form.data) + ("error" -> Messages("validation.errors")))
},

success = {newProduct =>
Product.add(newProduct)
val message = Messages("products.new.success", newProduct.name)
Redirect(routes.Products.show(newProduct.ean)).
flashing("success" -> message)
}
)
}

def newProduct = Action { implicit request =>
val form = if(flash.get("error").isDefined)
productForm.bind(flash.data)
else
productForm

Ok(views.html.products.editProduct(form))
}
}

最佳答案

示例是使用 Play < 2.3,您可能需要检查您当前使用的版本。随着 Play > 2.3,request.flash必须改用。在这两种情况下,您都可以使用 request.flash (这是更明确的)。

关于scala - 在 Products.scala 中找不到 flash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25218039/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com