1

숫자가 예상되는 양식이 있습니다 ... 제출했는지 여부를 확인하는 데 어려움을 겪고 있습니다. 필요하다고 말하는 메시지가 표시됩니다. 다음 사례를 시도했지만 아무도 작동하지 않았습니다.Play 스칼라 양식에 숫자가 있는지 확인

"orderBy" -> number.verifying("The order is required",_.isInstanceOf[Int]) 

"orderBy" -> number.verifying("The order is required",_>0) 

아이디어가 있으십니까?

답변

1

과 함께 orderBy이 제출되지 않은 경우 error.required 키를 사용하여 FormError을 반환합니다.

숫자 대신 빈 String이 제출 된 경우를 의미한다고 가정합니다. 귀하의 시도에 대한 문제는 String 빈이 number 유효성 검사기를 지나치지 않기 때문에 verifying 기능에 도달하지 못한다는 것입니다.

제가 생각할 수있는 유일한 것은 사용자 정의 Mapping[Int]을 작성한 후 필드가 비어 있는지 먼저 확인한 다음 유효한 Int인지 확인합니다.

val requiredNumber: Mapping[Int] = Forms.nonEmptyText 
    .verifying("Must be numeric", i => Try(i.toInt).isSuccess || i.isEmpty) 
    .transform[Int](_.toInt, _.toString) 

그리고 테스트 :

scala> val form = Form(mapping("orderBy" -> requiredNumber)(identity)(Some(_))) 

scala> form.bind(Map("orderBy" -> "1")).value 
res24: Option[Int] = Some(1) 

scala> form.bind(Map("orderBy" -> "")).errors 
res26: Seq[play.api.data.FormError] = List(FormError(orderBy,List(error.required),WrappedArray())) 

scala> form.bind(Map("orderBy" -> "aa")).errors 
res27: Seq[play.api.data.FormError] = List(FormError(orderBy,List(Must be numeric),WrappedArray())) 

scala> form.bind(Map("orderByzzz" -> "2")).errors 
res28: Seq[play.api.data.FormError] = List(FormError(orderBy,List(error.required),List())) 
관련 문제