Использование поля или текста LiftScreen - PullRequest
5 голосов
/ 15 февраля 2011

Я использую черту LiftScreen, и у меня есть сомнения относительно поля и текстовых методов.Текстовый метод использует метод makeField, а затем SHtml.text для визуализации поля, а метод field использует черту FormVendor для рендеринга HTML.

Так что это лучший способ добавитьполе?Я должен был использовать метод поля или методы text / password / etc?

Спасибо.

1 Ответ

6 голосов
/ 17 февраля 2011

Метод поля - это немного синтаксического сахара для создания полей с использованием генераторов полей.Для создания поля он использует значения по умолчанию из этого генератора.

Метод makeField учитывает точные спецификации вашего поля.

Как такового, «Один лучший ответ» отсутствует.Если вас устраивают поля по умолчанию, созданные FormVendor, используйте их.Если вам нужен более конкретный контроль над полями, используйте makeField.

makeField эффективно принимает заданные ему аргументы и использует их для создания настраиваемого поля.Например, makeField("Password", "", SHtml.password(is, set _)) фактически равно

object MyScreen extends LiftScreen { 
  val password = new Field { 
    type ValueType = String 
    override def name = "Password" 
    override implicit def manifest = buildIt[String] 
    override def default = "" 
    override def toForm: Box[NodeSeq] = SHtml.password(is, set _) 
  } 
} 

(взято из Добавление типов пользовательских полей к LiftScreen )

Это относится только к одному LiftScreen.Если вам нужно использовать настраиваемое поле на нескольких LiftScreen'ах, создать отдельную черту, Lift Wiki заявляет " Вы можете настроить глобальных поставщиков Типа → Формы в LiftRules.vendForm для области приложенияФорма продажи". В частности, на этой странице приведен пример кода и дополнительные пояснения.

...