2015-01-29 1 views
1

Я использую Play Framework 2.3.6 и ScalaBig Double в шаблонах Scala и Play Framework

Когда я пытаюсь отобразить вход с большой двойной, т.е. 55 000 000 отображается на входе 5.5E7

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

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

Как я могу изменить форматирование по умолчанию или каким-то образом отобразить его правильно?

+0

См. Мой ответ ниже. Кстати, если вы могли бы предоставить более подробную информацию о том, как вы определяете 'field' (это форма?), Я мог бы отредактировать ответ, чтобы предоставить более релевантные детали. –

ответ

1

Прежде всего это связано с представлением toString значения Double.

Например

scala> val a: Double = 55000000 
a: Double = 5.5E7 

scala> a.toString 
res8: String = 5.5E7 

Double типа

В соответствии с Scala docs, то Double тип представляет собой 64-битное число с плавающей точкой эквивалентно double примитивного типа Java.

Теперь, если Double - это то, что вам действительно нужно, вы должны отформатировать его должным образом, иначе вы можете использовать тип Long.

Форматирование

Вы можете обратиться к String Interpolation section в Scala документации для получения дополнительной информации о форматировании, но на короткое время, вы можете добиться того, что вы хотите с

"%1.0f" format a 

, который дает вам 55000000 как результат.

Play хелперы

Я бы сказал, вы должны настроить это, где вы определяете Form (или ваш Field, если у вас нет каких-либо Form), а не в файле шаблона.

Что вам нужно изменить это format определено в play.api.data.Mapping классе:

/** 
* The Format expected for this field, if it exists. 
*/ 
val format: Option[(String, Seq[Any])] = None 

при определении Form или format передается Field случае класса в случае использования Field непосредственно:

/** 
* @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])