Платформа Cuba. Посібник із розробки додатків4.5.2.1. Компоненти
4.5.2.1.27. TextField
Поле для редагування тексту. Може використовуватися як для роботи з атрибутами сутностей, так і для введення та відображення довільної текстової інформації.
XML-ім'я компонента: textField

Компонент текстового поля реалізований для блоків Web Client та Desktop Client.
Приклад текстового поля із заголовком, взятим із пакета локалізованих повідомлень:
На малюнку нижче показано вигляд простого текстового поля.
Для створення текстового поля, пов'язаного з даними, необхідно використовувати атрибути datasource та property.
Якщо поле не пов'язане з атрибутом сутності (тобто не вказано джерело даних та назва атрибута), можна вказати тип даних за допомогою атрибута datatype . Тип даних використовується для форматування поля. Як значення атрибуту може бути вказано будь-яке ім'я типу даних, зареєстрованого в метаданих додатках - див. Розділ 4.2.2.3, Datatype. Як правило, у TextField використовуються такі типи даних:
Як приклад розглянемо текстове поле з типом даних Integer.
Якщо в такому полі ввести значення, яке неможливо інтерпретувати як ціле число, при втраті фокусу полем буде виведено повідомлення про помилку і значення поля повернеться на попереднє:

Текстовому полю може бути призначений валідатор – клас, що реалізує інтерфейс Field.Validator. Валідатор дозволяє додатково до datatype обмежити інформацію, що вводиться користувачем. Наприклад, для створення поля введення позитивних цілих чисел потрібно створити клас валідатора:
і встановити його для текстового поля з типом даних int в елементі validator:
На відміну від перевірки рядка, що вводиться на відповідність типу даних, валідація спрацьовує не відразу при втратіполем фокуса, а лише при виклику у поля методу validate(). Це означає, що поле (і пов'язаний з ним атрибут сутності) може деякий час містити значення, що не відповідає умовам валідації (у наведеному прикладі непозитивне число). Це не є проблемою, оскільки зазвичай поля редагування з валідацією розташовуються на екрані редагування, а він автоматично викликає валідацію всіх своїх полів перед комітом. Якщо ж поле знаходиться не в екрані редагування, необхідно викликати метод validate() поля в контролері явно.
Якщо текстове поле пов'язане з атрибутом сутності (через datasource і property ), і якщо для атрибуту сутності в JPA-анотації @Column зазначено параметр length , TextField буде обмежувати максимальну довжину введеного тексту.
Якщо текстове поле не пов'язане з атрибутом, або для нього не визначено значення length або це значення потрібно перевизначити, то для обмеження максимальної довжини тексту, що вводиться, можна використовувати атрибут maxLength . Значення "-1" означає відсутність обмеження. Наприклад:
За промовчанням текстове поле відсікає пробіли на початку та наприкінці введеного рядка. Тобто якщо користувач ввів рядок "aaa bbb" то значення поля, що повертається методом getValue() і зберігається у зв'язаний атрибут сутності, буде рядок "aaa bbb". Щоб вимкнути відсікання пробілів, використовуйте атрибут trim зі значенням false .
Слід мати на увазі, що відсікання пробілів працює тільки при введенні нового значення. Якщо в значенні пов'язаного атрибута вже є пробіли, вони відображатимуться доти, доки користувач не змінить значення поля.
Текстове поле завжди замість введеного порожнього рядка повертає null. Відповідно, при включеному атрибуті trim рядок,що складається з одних прогалин також перетвориться на null.
Атрибут inputPrompt задає рядок, що відображається в полі, якщо його значення дорівнює null. Реалізовано лише для web клієнта.
Метод setCursorPosition() використовується для встановлення позиції курсору у вказаний індекс (починається з 0). Після дзвінка методу поле приймає фокус введення.