2015-01-29 7 views
1

나는 플레이 프레임 워크 2.3.6 스칼라큰 더블 플레이 프레임 워크

를 사용하고이 입력에 표시 55 000 000 5.5E7

@inputText(field("price"), '_label -> "Price") 

<input type="text" id="price" name="price" value="5.5E7"> 

어떻게 기본 서식을 변경하거나 어떻게 든 올바르게 표시 할 수 있습니까?

+0

내 대답은 아래를 참조하십시오. 그런데'field'를 정의하는 방법에 대한 자세한 내용을 제공 할 수 있다면 (양식일까요?) 관련성있는 세부 정보를 제공하기 위해 답을 편집 할 수 있습니다. –

답변

1

우선이 값은 Double 값의 toString 표현 때문입니다. 예

Scala docs 따르면
scala> val a: Double = 55000000 
a: Double = 5.5E7 

scala> a.toString 
res8: String = 5.5E7 

Double

들어

Double 유형 자바 double 프리미티브 타입에 대한 64 비트 플로팅 포인트 수에 상당한다.

이제 Double이 정말로 필요한 경우 제대로 포맷해야합니다. 그렇지 않으면 Long 유형을 사용할 수 있습니다.

당신은 포맷에 대한 추가 정보를 원하시면 스칼라 문서에 String Interpolation section을 참조 할 수 있습니다 포맷하기

하지만 잠깐, 당신은 당신이 당신에게 결과 55000000를 제공

"%1.0f" format a 

으로 원하는 것을 얻을 수 있습니다.

플레이 도우미

난 당신이 템플릿 파일에 당신이 당신의 Form 정의 경우 (또는 Field을 당신이 어떤 Form이없는 경우)이 사용자 지정하고 안 말할 것입니다. 변경할 필요가있는 무엇

play.api.data.Mapping 클래스에 정의 된 format입니다 :

직접 Field을 사용하는 경우 Field 경우 클래스에 전달되는 Form, 또는 format 정의의 경우
/** 
* The Format expected for this field, if it exists. 
*/ 
val format: Option[(String, Seq[Any])] = None 

:

/** 
* @param format the format expected for this field 
*/ 
case class Field(private val form: Form[_], name: String, constraints: Seq[(String, Seq[Any])], format: Option[(String, Seq[Any])], errors: Seq[FormError], value: Option[String])