Konwersja danych. Programowanie komponentowe 4. wg http://docs.oracle.com/javaee/6/tutorial/doc/ bnaph.html



Podobne dokumenty
Zastosowanie konwerterów wg

Zastosowanie słuchaczy zdarzeń wg

Budowa aplikacji wielowarstwowych zastosowanie szablonów. Laboratorium 2 Programowanie komponentowe Zofia Kruczkiewicz

Wielowarstwowa aplikacja internetowa. Wykonanie widoku typu tabela. Pliki typu properties. wg

Budowa aplikacji wielowarstwowych. Zastosowanie konwerterów oraz plików typu properties.

Projektowanie i wdrażanie systemów informatycznych. Dodanie aplikacji klienta uruchamianej przez przeglądarkę kontynuacja projektu:

Złożone komponenty JSF wg

Budowa aplikacji wielowarstwowych, zastosowanie obiektów transferowych, konwerterów i walidatorów

Złożone komponenty JSF wg

Przykłady pytań do zaliczenia programu wykonywanego w ramach zajęć laboratoryjnych 6-8 z Programowania komponentowego w Javie. Zofia Kruczkiewicz

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów, tabel oraz plików typu properties

Zastosowanie słuchaczy zdarzeń, walidatorów oraz komponentów wyboru wg

Java Server Faces narzędzie do implementacji w wy prezentacji

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń, zastosowanie walidatorów, wykonanie listy typu Drop Down List.

Budowa prostej aplikacji wielowarstwowej. Laboratorium 1 Programowanie komponentowe Zofia Kruczkiewicz

Budowa aplikacji wielowarstwowych. Obsługa zdarzeń

Budowa aplikacji wielowarstwowych. Zastosowanie technologii Ajax

Budowa aplikacji wielowarstwowych. Zastosowanie technologii Ajax

JavaServer Faces (JSF)


Budowa aplikacji wielowarstwowych. Zastosowanie szablonów, tabel oraz plików typu properties

Przykłady tworzenia aplikacji komponentowych w technologii JavaServer Faces 2.1 na podstawie

Zastosowanie walidatorów oraz komponentów wyboru wg

Budowa prostej aplikacji wielowarstwowej

Zastosowanie technologii Ajax w ramach technologii JavaServer Faces wg

Programowanie komponentowe 5

Java Server Faces - wprowadzenie

Wybierz kategorię Java Web i typ projektu Web Application. Kliknij przycisk Next >.

BEAN VALIDATION. Waldemar Korłub. Narzędzia i aplikacje Java EE KASK ETI Politechnika Gdańska

Programowanie wielowarstwowe i komponentowe

Programowanie wielowarstwowe i komponentowe

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów

Podstawy technologii JavaServer Faces wg

Serwery aplikacji. mgr Radosław Matusik. Wydział Matematyki i Informatyki Uniwersytetu Łódzkiego radmat radmat@math.uni.lodz.

Budowa aplikacji wielowarstwowych. zastosowanie walidatorów.

Podstawowe informacje o technologii Java Persistence API - przykład

Aplikacje WWW - laboratorium

Podstawy technologi JavaServer Faces

Wprowadzenie do technologii JavaServer Faces 2.2 na podstawie Wykład 2 Technologie internetowe

Wstęp - Prosta aplikacja internetowa w technologii Java EE 5. Programowanie komponentowe 1

termin Podobna wada 2) jak w Sklep_ , zal. 3.0 termin

Programowanie komponentowe. Przykład 1 Bezpieczeństwo wg The Java EE 5 Tutorial Autor: Zofia Kruczkiewicz

Budowa aplikacji wielowarstwowych. Zastosowanie szablonów, tabel oraz plików typu properties

Katalog książek cz. 2

Zaawansowane aplikacje WWW - laboratorium

D:\DYDAKTYKA\ZAI_BIS\_Ćwiczenia_wzorce\04\04_poprawiony.doc 2009-lis-23, 17:44

Wykład 4: Klasy i Metody

Poznań Java User Group Java Server Faces. Wprowadzenie (Fakty i Mity)

Zaawansowane aplikacje internetowe

Laboratorium 1. Wzorce oprogramowania lab1, Zofia Kruczkiewicz

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Internacjonalizacja i lokalizowanie aplikacji internetowych wg

Aplikacje w środowisku Java

Języki i metodyka programowania. Typy, operatory, wyrażenia. Wejście i wyjście.

Zastosowanie komponentów EJB typu Session

Internacjonalizacja i lokalizowanie aplikacji internetowych wg

Metody Metody, parametry, zwracanie wartości

Specyfikacja HTTP API. Wersja 1.6

Autor: dr inż. Katarzyna Rudnik

termin. Podobna wada 2) jak w Sklep_6

termin Podobna wada 2) jak w Sklep_ , zal. 3.0 termin

)<h:commandLink action="#{managed _produkt.dane_pro duktu}" value="ok" actionlistener="#{m anaged_produkt.

Metody dostępu do danych

Zaawansowane aplikacje internetowe - laboratorium

Aplikacja webowa w Javie szybkie programowanie biznesowych aplikacji Spring Boot + Vaadin

Programowanie w Sieci Internet JSP ciąg dalszy. Kraków, 9 stycznia 2015 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

6. Powtórz kroki z punktu 5. dla strony sorry.jsp, zmieniając jedynie treść wyświetlanego tekstu ( Niestety zamiast Witaj )

Infrastruktura aplikacji WWW II

JAVA SERVER FACES jest to nowy framework Javy do tworzenia interface u użytkownika dla aplikacji sieciowych.

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Laboratorium 7 Blog: dodawanie i edycja wpisów

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Klasy abstrakcyjne, interfejsy i polimorfizm

Java EE: JSF + EJB + JPA + CDI + BV

Języki i metody programowania Java. Wykład 2 (część 2)

Programowanie obiektowe

Podstawowe elementy GUI cz. 2 i 3 - zadania

Programowanie wielowarstwowe i komponentowe JSP, JSF

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Analizując żądania za pomocą narzędzi developerskich można odczytać listę preferowanych języków, jak na poniższym przykładzie.

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Informatyka I. Typy danych. Operacje arytmetyczne. Konwersje typów. Zmienne. Wczytywanie danych z klawiatury. dr hab. inż. Andrzej Czerepicki

Aplikacje internetowe i rozproszone - laboratorium

Plan. Raport. Tworzenie raportu z kreatora (1/3)

Aplikacje RMI Lab4

Stałe, znaki, łańcuchy znaków, wejście i wyjście sformatowane

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Pola i metody statyczne. Klasy zawierające pola i metody statyczne

Aplikacje mobilne. Pliki zasobów, grafiki, menu, podpinanie zdarzeń. dr Tomasz Jach Instytut Informatyki, Uniwersytet Śląski

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Strumieniowe bazy danych. Piotr i Paweł

Technologie i usługi internetowe cz. 2

Programowanie w Internecie. Java

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Realizacja Aplikacji Internetowych 2013 laboratorium cz. 2 K.M. Ocetkiewicz

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Transkrypt:

Konwersja danych wg http://docs.oracle.com/javaee/6/tutorial/doc/ bnaph.html Programowanie komponentowe 4

Znaczniki typu f:

1. Podstawowe znaczniki JSF Znaczniki do obsługi zdarzeń f:actionlistener f:phaselistener f:setpropertyactionlistener f:valuechangelistener Funkcja Dodaje słuchacza zdarzeń typu action listener do komponentu typu ojciec Dodaje słuchacza zdarzeń typu PhaseListener do strony Rejestruje specjalnego słuchacza zdarzeń, którego jedynym celem jest przekazanie wartości do obiektu typu Managed Bean, gdy zawartość formularza jest przekazywana do serwera www. Dodaje słuchacza zdarzeń typu value-change listener do komponentu typu ojciec Znaczniki reprezentujące elementy listy f:selectitem f:selectitems Funkcja Reprezentuje jedną pozycję z listy Reprezentuje listę

2. Podstawowe znaczniki JSF Znaczniki do obsługi konwersji f:converter f:convertdatetime f:convertnumber Funkcja Dodaje dowolny konwerter do komponentu typu ojciec Dodaje instancję konwertera typu DateTimeConverter do komponentu typu ojciec Dodaje instancję konwertera typu NumberConverter do komponentu typu ojciec Znaczniki aspektowe f:facet f:metadata Funkcja Dodaje zagnieżdżony komponent, który ma specjalne powiązanie ze znacznikiem zagnieżdżającym Rejestruje znacznik typu facet w komponencie typu ojciec

3. Podstawowe znaczniki JSF Znaczniki walidatorów f:validatedoublerange f:validatelength f:validatelongrange f:validator f:validateregex f:validatebean f:validaterequired Funkcje Dodaje walidator typu DoubleRangeValidator do komponentu Dodaje walidator typu LengthValidator do komponentu Dodaje walidator typu LongRangeValidator do komponentu Dodaje walidator zdefiniowany przez programistę do komponentu Dodaje walidator typu RegExValidator do komponentu Zapewnia walidację lokalnej warstości (atrybut value) za pomocą walidatora typu BeanValidator Wymusza obecność wartości (atrybut value) w komponencie

4. Podstawowe znaczniki JSF Kategoria znacznika atrybut konfiguracji lokalizacja Parametr zastępowania Ajax zdarzenie Znaczniki różne f:attribute f:loadbundle f:param f:ajax f:event Funkcje Dodaje atrybuty konfiguracji do komponentu typu ojciec Specyfikuje komponent typu ResourceBundle, który jest reprezentowany w postaci obiektu typu Map Zastepuje parametry w komponencie typu MessageFormat i dodaje zapytanie w postaci pary nazwa-wartość do URL Łączy zdarzenia Ajax z pojedynczym komponentemlub grupą komponentów opartych na rozmieszczeniu Pozwala na instalację słuchacza zdarzeń ComponentSystemEventListener w komponencie

Praktyczne porady dotyczące stosowania znaczników typu f: Znaczniki Znaczniki do obsługi zdarzeń Znaczniki do obsługi konwersji f:facet f:loadbundle f:metadata f:param f:selectitem i f:selectitems Znaczniki walidatorów f:ajax Gdzie używać znaczniki Rejestrowanie słuchaczy zdarzeń w komponentach Użycie standardowych konwerterów Użycie komponenetów typu Data-Bound Table i Laying Out ze znacznikami h:panelgrid oraz h:panelgroup Korzystanie z zasobów np. z plików typu properties Używanie parametrów widoków do konfiguracji zakładek adresów URL Wyświetlanie sformatowane wiadomości ze znacznikiem h:outputformat Używanie znaczników f:selectitem i f:selectitems do wyboru jednej lub wielu opcji Używanie standardowych walidatorów Dotyczy zagdanienia używania technologii Ajax z technologią JavaServer Faces

Zadania konwerterów, słuchaczy zdarzeń i walidatorów Konwertery są używane do konwersji danych pobranych z komponentów wejściowych. Słuchacze zdarzeń są używane do wykrywania zdarzeń i ich obsługi za pomocą akcji, powiąznych ze zdarzeniem. Walidatory są używane do walidacji danych pobranych z komponentów wejściowych

Konwertery liczbowe i daty

Konwertery - javax.faces.convert DoubleConverter DoubleConverter DoubleConverter DoubleConverter ShortConverter ShortConverter ShortConverter ShortConverter DateTimeConverter DateTimeConverter DateTimeConverter DateTimeConverter NumberConverter NumberConverter NumberConverter NumberConverter CharacterConverter CharacterConverter CharacterConverter CharacterConverter LongConverter LongConverter LongConverter LongConverter ByteConverter ByteConverter ByteConverter ByteConverter IntegerConverter IntegerConverter IntegerConverter IntegerConverter BooleanConverter BooleanConverter BooleanConverter BooleanConverter FloatConverter FloatConverter FloatConverter FloatConverter BigIntegerConverter BigIntegerConverter BigIntegerConverter BigIntegerConverter EnumConverter EnumConverter EnumConverter EnumConverter BigDecimalConverter BigDecimalConverter BigDecimalConverter BigDecimalConverter

Sposoby rejestrowania konwerterów do komponentu 1. Zbindowanie atrybutu value komponentów do właściwości obiektów typu Managed Bean takiego samego typu jak konwerter. 2. Zagnieżdżenie znaczników jednego ze standardowych konwerterów convertnumber i convertdatetime wewnątrz znaczników komponentów 3. Powiązanie atrybutu converter w komponencie z konwerterem zdefiniowanym w obiekcie typu Managed Bean. 4. Zagnieżdżenie znacznika converter wewnątrz znacznika komponentu i użycie albo jego atrybutu converterid lub jego atrybutu binding powiązanego z konwerterem zdefiniowanym w obiekcie typu Managed Bean.

Atrybuty znacznika convertnumber Atrybut binding currencycode currencysymbol for groupingused integeronly Typ NumberConverter String String String Boolean Boolean Opis Używany do powiązania konwertera z właściwością obiektu typu Managed Bean ISO 4217 - kod oznaczeń własnych programisty Własny symbol programisty Używany w komponentach kompozytowych do powiązania z wybranym z wielu komponentów Specyfikuje, czy w formatowanym wyjściu znajdują się separatory grupowania. Określa, czy tylko część całkowitą wartości będzie konwertowana.

locale maxfractiondigits maxintegerdigits minfractiondigits minintegerdigits pattern type String lub Locale int Int int int String String Kod, którego numer stylu jest używany do formatowania lub analizowania danych. Maksymalna liczba cyfr sformatowanych w części ułamkowej formatowanego wyjścia Maksymalna liczba cyfr sformatowanych w części całkowitej formatowanego wyjścia. Minimalna liczba cyfr sformatowanych w części ułamkowej formatowanego wyjścia Minimalna liczba cyfr sformatowanych w części całkowitej formatowanego wyjścia. Niestandardowy wzór formatowania, który określa sposób sformatowana i analizowania ciągu znaków liczby. Określa, czy ciąg znaków jest analizowany i formatowane jako liczba, waluta, lub procent. Jeśli nie podano, używa się formatu liczby.

Atrybuty znacznika convertdatetime Atrybut binding datestyle for locale Typ DateTimeConverter String String String or Locale Opis Używany do przypisania konwertera do właściwości obiektu typu Managed Bean Definiuje format daty lub fragment zawierający datę, podany przez klasę java.text.dateformat. Stosowany tylko wtedy, gdy typ jest datą lub data i czasem lub jeśli szablon nie zdefiniowany Poprawne wartości formatu: domyślna, krótka, średnia, długa i pełna. Jeśli nie podano wartości formatu, używana jest domyślna wartość. Używany w złożonych komponentach. Odnosi się do jednego z obiektów nalżących do złożonego komponentu, wewnątrz którego ten znacznik jest zagnieżdżony. Kod kraju, którego predefiniowane style dla dat i czasu są używane podczas formatowania lub przetwarzania. Jeśli nie podano, wykorzystywany jest kod kraju, zwrócony przez javax.faces.context.facescontext.getlocale.

pattern timestyle timezone type String String String lub TimeZone String Niestandardowy wzór formatowania, który określa, jak łańcuch data / czas powinien być sformatowany i analizowany. Jeżeli ten atrybut jest określony, ignorowane są atrybuty datestyle, timestyle i type. Definiuje format czasu lub część łańcucha, dotyczący czasu w łańcuchu daty, określony przez java.text.dateformat. Stosowany tylko wtedy, kiedy typ jest czasem i szablon nie jest zdefiniowany. Prawidłowe wartości formatu: domyślny, krótki, średnii, długi i pełny. Jeśli wartość nie jest określona, używana jest domyślna wartość formatu. Strefa czasu, w której interpretuje się czas w łańcuchu daty Określa, czy wartość ciągu będzie zawierać datę, czas, lub obie. Prawidłowe wartości to: data, czas, lub obie. Jeśli wartość nie jest określona, używana jest data.

Wpływ Locale na formatowanie Jeśli w komponentach atrybut locale nie jest ustawiony, wtedy przez komponent jest pobierana domyślna wartość tego atrybutu za pomocą javax.faces.context.facescontext.getlocale. W celu uzyskania różnych formatów, należy ustawić wartość atrybutu locale indywidualnie w każdym komponencie, w przeciwnym wypadku zdefiniować domyślną wartość locale w pliku faces-config. public class Locales { public static void main(string[] args) { String pattern = "######.###"; double value = 111111.111; Locale locales[] = Locale.getAvailableLocales(); for (Locale loc : locales) { NumberFormat number_f = NumberFormat.getNumberInstance(loc); DecimalFormat decimal_f = (DecimalFormat) number_f; decimal_f.applypattern(pattern); String output = decimal_f.format(value); System.out.println(pattern + " " + output + " " + loc.tostring()); } } }

Pattern ######.### ######.### ######.### ######.### ######.### ######.### ######.### ######.### ######.### ######.### ######.### Wyjściowy łańcuch dla wartości: 111111.111 111111,111 111111,111 111111,111 111111,111 111111,111 111111,111 111111,111 111111,111 111111,111 111111,111 111111,111 locale pl pl_pl fr fr_be fr_ca fr_fr fr_lu de de_at de_de de_lu

######.### ######.### ######.### ######.### ######.### ######.### ######.### ######.### ######.### ######.### ######.### ######.### 111111.111 111111.111 111111.111 111111.111 111111.111 111111.111 111111.111 111111.111 111111.111 111111.111 111111.111 111111.111 en en_au en_ca en_gb en_ie en_in en_mt en_nz en_ph en_sg en_us en_za

Pierwszy sposób rejestrowania Definicja typów liczbowych właściwości obiektu Managed_produkt @ManagedBean @RequestScoped public class Managed_produkt { @EJB private Fasada_warstwy_biznesowej fasada; private DataModel items; private int stan = 1; private Produkt_dto produkt_dto = new Produkt_dto(); Sposób 1

Metody właściwości obiektu Managed_produkt, używanych w atrybutach value komponentów wejściowych i wyjściowych public Float getcena() { return produkt_dto.getcena(); } public void setcena(float cena) { this.produkt_dto.setcena(cena); } public Integer getpromocja() { return produkt_dto.getpromocja(); } public void setpromocja(integer promocja) { this.produkt_dto.setpromocja(stan); } public Float getcena_brutto() { return produkt_dto.getcena_brutto(); } public void setcena_brutto(float cena_brutto) { this.produkt_dto.setcena_brutto(cena_brutto); } Właściwość definiująca konwerter typu Float Właściwość definiująca konwerter typu Integer Właściwość definiująca konwerter typu Float Metody definujące właściwości obiektu Managed_produkt, umożliwiające bindowanie danych w formularzach JSF danymi sa pola obiektu produkt_dto

Obiekt typu Produkt_dto implementacja wzorca projektowego Transfer Object public class Produkt_dto { protected long id; protected String nazwa; protected float cena; protected int promocja; protected Date data_produkcji; protected float cena_brutto; Sposób 1 public String getnazwa() { return nazwa; } public long getid() { return id; } public void setid(long id) { this.id = id; } public void setnazwa(string nazwa) { this.nazwa = nazwa; } public float getcena() { return cena; } public void setcena(float cena) { this.cena = cena; }

Fragment pliku jsf, korzystający z właściwości obiektu Managed_produkt typ liczbowy właściwości pozwala na formatowanie danych liczbowycj przy wprowadzaniu danych (atrybut value komponentów h:inputtext) <h:outputlabel value="#{bundle['jsf.dodaj_produkt2.podaj_cena']}" for="cena" /> <h:inputtext id="cena" title="#{bundle['jsf.dodaj_produkt2.podaj_cena']}" value="#{managed_produkt.cena}" required="true" requiredmessage="#{bundle['jsf.dodaj_produkt2.podaj_cena_blad']}" > </h:inputtext> <h:outputlabel value="#{bundle['jsf.dodaj_produkt2.podaj_promocja']}" for="promocja" /> <h:inputtext id="promocja" title="#{bundle['jsf.dodaj_produkt2.podaj_promocja']}" value="#{managed_produkt.promocja}" required="true" requiredmessage="#{bundle['jsf.dodaj_produkt2.podaj_promocja_blad']}" > </h:inputtext>

Fragment pliku jsf, korzystający z właściwości obiektu Managed_produkt typ liczbowy właściwości pozwala na formatowanie danych liczbowycj przy wyprowadzaniu danych (atrybut value komponentów h:outputtext) <h:outputlabel value="#{bundle['jsf.lista_produktow.cena']}" for="cena" /> <h:outputtext id="cena" value="#{managed_produkt.cena}"/> <h:outputlabel value="#{bundle['jsf.lista_produktow.promocja']}" for="promocja" /> <h:outputtext id="promocja" value="#{managed_produkt.promocja}"/> <h:outputlabel value="#{bundle['jsf.lista_produktow.data']}" for="data"/> <h:outputtext id="data" value="#{managed_produkt.data_produkcji}"/> <h:outputlabel value="#{bundle['jsf.lista_produktow.cenabrutto']}" for="brutto" /> <h:outputtext id="brutto" value="#{managed_produkt.cena_brutto}" />

Fragment pliku jsf, korzystający z komponentu h:datatable, gdzie atrybut value="#{managed_produkt.items}" oraz var="item", gdzie item jest typu Produkt_dto <h:column> <f:facet name="header"> <h:outputtext value="#{bundle['jsf.lista_produktow.id']}"/> </f:facet> <h:outputtext value="#{item.id}"/> </h:column> <h:column> <f:facet name="header"> <h:outputtext value="#{bundle['jsf.lista_produktow.cena']}"/> </f:facet> <h:outputtext value="#{item.cena}"/> </h:column> <h:column> <f:facet name="header"><h:outputtext value="#{bundle['jsf.lista_produktow.promocja']}"/></f:facet> <h:outputtext value="#{item.promocja}"/> </h:column> <h:column> <f:facet name="header"> <h:outputtext value="#{bundle['jsf.lista_produktow.data']}"/></f:facet> <h:outputtext value="#{item.data_produkcji}"/> </h:column> <h:column> <f:facet name="header"> <h:outputtext value="#{bundle['jsf.lista_produktow.data']}"/></f:facet> <h:outputtext value="#{item.cena_brutto}"/> </h:column>

Sposób 1 Sposób 1 Widok strony po kliknięciu na przycisk OK. Efekt uzyskany dzięki domyślnym wartościom pól wejściowych po zastosowaniu domyślnych konwerterów typu Float i Integer oraz polom required i requiredmessage w pozostałych polach wejściowych

Wynik działania domyślnych konwerterów: Float, Integer, Date oraz Float

Dane po konwersji w komponencie typu datatable Wynik działania domyślnych konwerterów: Long, Float, Integer, Date oraz Float

Drugi sposób rejestrowania (1) Konwerter typu convertnumber z atrybutem pattern określającym sposób prezentowania wartości i oznaczeń wartości konwertowanej (zł w kodzie UTF-8) <h:column> <f:facet name="header"> <h:outputtext value="#{bundle['jsf.lista_produktow.cena']}"/> </f:facet> <h:outputtext value="#{item.cena}"> <f:convertnumber pattern="####.## zł"/> </h:outputtext> </h:column>

(2) Konwerter typu convertnumber z atrybutami currencysymbol (%) i type do specyfikowania własnego typu (programisty) i oznaczeń wartości konwertowanej <h:column> <f:facet name="header"> <h:outputtext value="#{bundle['jsf.lista_produktow.promocja']}"/> </f:facet> <h:outputtext value="#{item.promocja}"> <f:convertnumber currencysymbol="%" type="currency"/> </h:outputtext> </h:column> (3) Konwerter typu convertnumber z atrybutami currencysymbol (zł w kodzie UTF-8) i type do specyfikowania własnego typu i oznaczeń wartości konwertowanej <h:outputtext value="#{item.cena_brutto}"> <f:convertnumber currencysymbol="zł" type="currency"/> </h:outputtext>

(4) Konwerter typu convertdatetime z atrybutem pattern określąjącym sposób wprowadzania daty: numer_dnia-numer_miesiaca-rok <h:outputlabel value="#{bundle['jsf.dodaj_produkt2.podaj_data']}" for="data"/> <h:inputtext id="data" title="#{bundle['jsf.dodaj_produkt2.podaj_data']}" value="#{managed_produkt.data_produkcji}" required="true requiredmessage="#{bundle['jsf.dodaj_produkt2.podaj_data_blad']}" > <f:convertdatetime pattern="dd-mm-yyyy" /> </h:inputtext> (5) Konwerter convertdatetime, który przekształca datę na nazwa_dnia, numer_dnia-numer_miesiąca-rok za pomocą atrybutu pattern. Nazwa dnia podawana jest w języku strefy czasowej podawanej przez javax.faces.context.facescontext.getlocale, jeśli nie został zdefiniowany atrybut locale. <h:column> <f:facet name="header"> <h:outputtext value="#{bundle['jsf.lista_produktow.data']}"/> </f:facet> <h:outputtext value="#{item.data_produkcji}"> <f:convertdatetime pattern="eeeeeeee, dd-mm-yyyy" /> </h:outputtext> </h:column>

(6) Konwerter typu convertdatetime z atrybutami datestyle, locale, timestyle oraz type, gdzie dla wybranych wartości atrybutów uzyskano następującą postać wyświetlanej daty: np. Saturday, February 2, 2013 12:00:00 AM GMT <h:outputlabel value="#{bundle['jsf.lista_produktow.data']}" for="data"/> <h:outputtext id="data" value="#{managed_produkt.data_produkcji}"> <f:convertdatetime datestyle="full" locale="en_us" timestyle="long" type="both"/> </h:outputtext>

Zawartość pliku typu faces-config.xml, określająca domyślną wartość Locale aplikacji (pl_pl) <?xml version='1.0' encoding='utf-8'?> <!-- ======= FULL CONFIGURATION FILE ========================= --> <faces-config version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd"> <application> <resource-bundle> <base-name>/bundle</base-name> <var>bundle</var> </resource-bundle> <locale-config> <default-locale>pl_pl</default-locale> <supported-locale>pl_pl</supported-locale> </locale-config> </application> </faces-config>

Działanie konwertera typu convertdatetime (4)

Działanie konwertera convertdatetime (6)

Działanie konwerterów typu convertnumber (1), (2), (3) oraz convertdatetime (5) pl_pl

Zawartość pliku typu faces-config.xml, określająca domyślną wartość Locale aplikacji (en_us) <?xml version='1.0' encoding='utf-8'?> <!-- ======= FULL CONFIGURATION FILE ========================= --> <faces-config version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_1.xsd"> <application> <resource-bundle> <base-name>/bundle</base-name> <var>bundle</var> </resource-bundle> <locale-config> <default-locale>en_us</default-locale> <supported-locale>pl_pl</supported-locale> </locale-config> </application> </faces-config>

Efekt zmiany formatowania domyślnego zdefiniowanego za pomocą znacznika default-locale na en_us w pliku faces-config.xml Atrybut locale ustawiony indywidulanie w convertdatetime (6) Działanie konwerterów typu convertnumber (1), (2), (3) oraz convertdatetime (5)

Trzeci sposób rejestrowania Należy dodać konwerter typu NumberConverter, który pozwala na wprowadzanie danych typu liczba rzeczywista, gdzie część ułamkowa jest oddzielona przecinkiem od części całkowitej liczby (pl_pl). Podczas wprowadzania dodawany jest symbol wartości zł @ManagedBean @RequestScoped public class Managed_produkt { @EJB private Fasada_warstwy_biznesowej fasada; private DataModel items; private int stan = 1; private Produkt_dto produkt_dto = new Produkt_dto(); private NumberConverter number_convert=new NumberConverter(); public NumberConverter getnumber_convert() { this.number_convert.setpattern("######.## zł"); return number_convert; } Sposób 3 i 4 public void setnumber_convert(numberconverter Number_convert) { this.number_convert = Number_convert; }

(7) Komponent typu h:inputtext z atrybutem converter, odwołującym się do konwertera typu NumberConverter zdefiniowanego w klasie obiektu typu Managed_produkt, gdzie nadano wartość jego atrybutu pattern metodą setpattern. Widok taki sam, jak dla konwertera (8) i (10) <h:inputtext id="cena" title="#{bundle['jsf.dodaj_produkt2.podaj_cena']}" value="#{managed_produkt.cena}" converter="#{managed_produkt.number_convert}" convertermessage="blad! Poprawny format: 0,0 zł lub 0 zł" required="true" requiredmessage="#{bundle['jsf.dodaj_produkt2.podaj_cena_blad']}" > </h:inputtext> <h:inputtext converter="javax.faces.convert.integerconverter"/>

Efekt zastosowania definicji konwertera wg 3-go sposobu definiowania konwertera wartości liczbowych za pomoca atrybutu converter komponentu (zastosowano znacznik <default-locale>pl_pl</default-locale> w pliku favces-congig.xml) należało część ułamkową oddzielić przecinkiem od części całkowitej. Komunikat o błędzie jest realizowany za pomocą atrybutu convertermessage komponentu typu h:inputtext

Czwarty sposób rejestrowania Należy dodać konwerter typu NumberConverter, który pozwala na wprowadzanie danych typu liczba rzeczywista, gdzie część ułamkowa jest oddzielona przecinkiem od części całkowitej liczby. Podczas wprowadzania dodawany jest symbol wartości zł @ManagedBean @RequestScoped public class Managed_produkt { @EJB private Fasada_warstwy_biznesowej fasada; private DataModel items; private int stan = 1; private Produkt_dto produkt_dto = new Produkt_dto(); private NumberConverter number_convert=new NumberConverter(); public NumberConverter getnumber_convert() { this.number_convert.setpattern("######.## zł"); return number_convert; } Sposób 3 i 4 public void setnumber_convert(numberconverter Number_convert) { this.number_convert = Number_convert; }

(8) Konwerter f:convertnumber, zbindowany z obiektem typu NumberConverter w klasie typu Managed_produkt za pomocą atrybutu binding, gdzie nadano wartość atrybutu pattern metodą setpattern <h:inputtext id="cena" title="#{bundle['jsf.dodaj_produkt2.podaj_cena']}" value="#{managed_produkt.cena}" required="true" requiredmessage="#{bundle['jsf.dodaj_produkt2.podaj_cena_blad']}" > <f:convertnumber binding="#{managed_produkt.number_convert}"/> </h:inputtext> cd. (9) Anulowanie wartości atrybutu pattern nadanego metodą setpattern w klasie Managed_produkt, pozwalający na wyświetlanie liczby rzeczywistej, gdzie część ułamkowa jest wyświetlana po przecinku i cała wartość oznaczona jest symbolem zł (pl_pl) <h:outputlabel value="#{bundle['jsf.lista_produktow.cena']}" for="cena" /> <h:outputtext id="cena" value="#{managed_produkt.cena}"> <f:convertnumber binding="#{managed_produkt.number_convert}" </h:outputtext> pattern="####.### zł -"/>

(10) Konwerter f:converter, zbindowany z obiektem typu NumberConverter w klasie typu Managed_produkt za pomocą atrybutu binding, gdzie nadano wartość atrybutu pattern metodą setpattern <h:inputtext id="cena" title="#{bundle['jsf.dodaj_produkt2.podaj_cena']}" value="#{managed_produkt.cena}" required="true" requiredmessage="#{bundle['jsf.dodaj_produkt2.podaj_cena_blad']}" > <f:convert binding="#{managed_produkt.number_convert}"/> </h:inputtext>

Działanie konwertera typu NumberConverter zbindowanego ze znacznikiem typu f:convertnumber (8) lub f:converter (10) pl_pl

Działanie konwertera typu NumberConverter (9) zbindowanego ze znacznikiem f:convertnumber pl_pl

Linki do materiałów zawierających informację o formatowaniu http://docs.oracle.com/javase/tutorial/i18n/format /simpledateformat.html http://docs.oracle.com/javase/tutorial/i18n/format /decimalformat.html