时间:2016-01-22 02:54:24

标签: scala playframework

我需要使用表单输入而不进行任何验证。 (值是可选的)所以我试图在表单中使用可选类型,但它弹出一些错误。我只需要创建一个包含4个输入字段的表单,其中3个需要仅作为文本值进行验证,另外一个字段可选(其值可以为空或不是),并且不在表单提交中验证

  

从stdout读取:   d:\ PROJECTS \测试\ Project_VendorM6 \程序\型号\ ProductSearch.scala:6:   找不到:输入可选   d:\ PROJECTS \测试\ Project_VendorM6 \程序\型号\ ProductSearch.scala:6:   找不到:type可选从stdout读取:case类   产品搜索(proname:   串,brandid:字符串,typeid的:字符串,供应商ID:可选[字符串])       case class ProductSearch(proname:String,brandid:String,typeid:String,supplierid:optional [String])读取   来自stdout:^

这是我在控制器中的表单验证

import play.api.data.Form
import play.api.data.Forms.{mapping, nonEmptyText,bigDecimal,text,number,optional}
 private val productSearchForm: Form[ProductSearch] = Form(
            mapping(
                "proname" -> text,
                "probrand" -> text,
                "protype" -> text,
                "prosup" -> optional(text) 

            )(ProductSearch.apply)(ProductSearch.unapply)
        ) 

这是我的模特

package models
import play.api.db._
import play.api.Play.current
import scala.collection.mutable.ListBuffer

    case class ProductSearch(proname: String,brandid:String,typeid:String,supplierid:optional[String])


        object ProductSearch {


        }  

我在没有模型中的可选关键字的情况下尝试了它,如下所示

case class ProductSearch(proname: String,brandid:String,typeid:String,supplierid:String)  

然后弹出两个编译错误

  

从stdout读取:   d:\项目\测试\ Project_VendorM6 \应用\控制器\ Products.scala:39:   类型不匹配;从stdout读取:found:(String,String,String,   String)=> models.ProductSearch从stdout读取:必需:(String,   String,String,Option [String])=> ?

  

从stdout读取:   d:\项目\测试\ Project_VendorM6 \应用\控制器\ Products.scala:39:   在对象ProductSearch中缺少方法unapply的参数;读   来自stdout:如果要将其视为部分应用,请使用_' if you want to treat it as a partially applied function D:\PROJECTS\test\Project_VendorM6\app\controllers\Products.scala:39: missing arguments for method unapply in object ProductSearch; follow this method with _'跟随此方法   函数从stdout读取:   )(ProductSearch.apply)(ProductSearch.unapply)               )(ProductSearch.apply)(ProductSearch.unapply)

1 个答案:

答案 0 :(得分:2)

几乎就在那里。您对模型对象的定义应使用Scala Option

case class ProductSearch(proname:String,
                         brandid:String,
                         typeid:String,
                         supplierid:Option[String])