Изучаем Java EE 7 - [175]
>Object getAsObject(FacesContext ctx, UIComponent component, String value)
>String getAsString(FacesContext ctx, UIComponent component, Object value)
Метод getAsObject() преобразует строковое значение компонента пользовательского интерфейса в соответствующий поддерживаемый тип и возвращает новый экземпляр. Этот метод генерирует исключение ConverterException, если преобразование не удалось. И наоборот, метод getAsString() преобразует объект предоставленного типа в строку, которая будет отрисована с помощью языка разметки (например, XHTML).
Как только вы разработаете собственный преобразователь, он должен быть зарегистрирован, чтобы можно было использовать его в веб-приложении. Один из методов регистрации — объявление преобразователя в файле faces-config.xml, а другой — использование аннотации @FacesConverter.
В листинге 11.13 показано, как создать собственный преобразователь, который преобразует цены из долларов в евро. Он начинается со связывания этого преобразователя с именем euroConverter с помощью аннотации @FacesConverter("euroConverter") и реализации интерфейса Converter. В этом примере только переопределяется метод getAsString(), который возвращает строковое представление данной цены в евро.
>@FacesConverter("euroConverter")
>public class EuroConverter implements Converter {
>··@Override
>··public Object getAsObject(FacesContext context, UIComponent component, String value) {
>····return value;
>··}
>··@Override
>··public String getAsString(FacesContext ctx, UIComponent component, Object value) {
>····float amountInDollars = Float.parseFloat(value.toString());
>····double ammountInEuros = amountInDollars * 0.8;
>····DecimalFormat df = new DecimalFormat("###,##0.##");
>····return df.format(ammountInEuros)
>··}
>}
Для того чтобы использовать этот преобразователь, укажите либо атрибут converter тега
>
>
>··
>
Или же вы можете использовать атрибут converter тега outputText:
>
Валидаторы
При работе с веб-приложениями должна быть обеспечена точность вводимых пользователем данных. Точный ввод данных может быть навязан на стороне клиента с применением JavaScript или на стороне сервера с помощью валидаторов и Bean Validation. JSF упрощает проверку данных благодаря стандартным и пользовательским серверным валидаторам. Валидаторы действуют как первый уровень контроля, проверяя значения компонентов пользовательского интерфейса перед тем, как они будут обработаны компонентом-подложкой.
Компоненты пользовательского интерфейса, как правило, выполняют простую проверку, например проверяют, является ли значение обязательным. Так, например, следующий тег требует, чтобы было введено значение в текстовом поле ввода:
>
Если вы не введете значение, то JSF вернет страницу с сообщением о том, что должно быть введено значение (страница должна иметь тег
Валидатор | Описание |
---|---|
DoubleRangeValidator | Проверяет значение соответствующего компонента на вхождение в заданный интервал, границы которого имеют тип double |
LengthValidator | Проверяет количество символов в строке, связанной с компонентом |
LongRangeValidator | Проверяет значение соответствующего компонента на вхождение в заданный интервал, границы которого имеют тип long |
MethodExpressionValidator | Выполняет проверку, выполнив метод объекта |
RequiredValidator | Эквивалентен присвоению значения true атрибуту required входного компонента |
RegexValidator | Проверяет значение определенного компонента на соответствие регулярному выражению |
Эти валидаторы полезны для общих задач, например таких, как определение длины поля или диапазона номеров. Они могут быть легко связаны с компонентом так же, как преобразователи (они оба могут быть использованы на одном компоненте). Следующий код обеспечивает, что название книги составляет от 2 до 20 символов в длину, а ее цена — от $1 до 500:
>
>··
>
>
>··
>
Пользовательские валидаторы
Возможно, стандартные валидаторы JSF не могут удовлетворить ваши потребности — вам, вероятно, потребуется иметь данные, которые должны следовать определенному формату, такому как почтовый индекс, область или адрес электронной почты. Вы должны создать собственный валидатор для обработки этих случаев. Как и преобразователи, валидатор — это класс, который должен реализовывать интерфейс и переопределить отдельные методы. В случае валидаторов таким интерфейсом является javax.faces.validator.Validator, который имеет один метод validate():
Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.
Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.
Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.