2016-01-22 58 views
0

我需要使用表單輸入而不進行任何驗證。 (值是可選的),所以我試圖使用可選類型的形式,但它彈出一些錯誤。簡單地說,我需要做的是創建一個帶有4個輸入字段的表單,其中3個僅需要驗證爲文本值,另一個字段可選(其值可以爲空也可以不是)並且不會在表單提交中驗證可選類型用於scala play框架中

閱讀從標準輸出

: d:\ PROJECTS \測試\ Project_VendorM6 \程序\型號\ ProductSearch.scala:6: 未發現:類型可選 d:\ PROJECTS \測試\ Project_VendorM6 \程序\型號\ ProductSearch.scala: 6: 找不到:type optional從stdout中讀取:case class ProductSearch(代名詞: String,brandid:String,typeid:String,supplierid:可選[String])case class ProductSearch(proname:String,brandid:String, Ť ypeid:字符串,供應商ID:可選[字符串])從標準輸出讀 :^

這裏是控制器

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) 

但隨後其彈出2個編譯錯誤

從標準輸出讀: d:\項目\測試\ Project_VendorM6 \應用\控制器\ Products.scala:39: 類型不匹配;從stdout中讀取:found:(String,String,String, String)=> models.ProductSearch從stdout中讀取:required:(String, String,String,Option [String])=>?從標準輸出讀

: d:\項目\測試\ Project_VendorM6 \應用\控制器\ Products.scala:39: 取消應用在對象產品搜索丟失論據方法;從標準輸出讀 :按照此方法與_' 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 _」如果你想要把它當作一個部分應用功能 從標準輸出閱讀: )(ProductSearch.apply)(ProductSearch.unapply) )(ProductSearch.apply)(產品搜索。不適用)

回答

2

幾乎在那裏。您對模型對象的定義應該使用Scala Option

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