Uwagi do wydania narzędzi JavaServer Faces i ODC

© Copyright International Business Machines Corporation 2006. Wszelkie prawa zastrzeżone. Ograniczone prawa na rzecz rządu Stanów Zjednoczonych - używanie produktów, tworzenie ich duplikatów oraz ujawnianie informacji o nich podlega zastrzeżeniom zawartym w umowie GSA ADP Schedule zawartej z firmą IBM® Corp.

Uwagi do wydania

1.0 Ograniczenia
   1.1 Składniki Faces Client i Client Data są nieaktualne
   1.2 Migracja aplikacji JSF utworzonych w wersjach wcześniejszych niż wersja 7 produktu
   1.3 Modyfikacja drzewa podczas przenoszenia z architektury WDO do SDO
   1.4 Znacznik hx:commandExButton powoduje teraz poprawne renderowanie obrazu
2.0 Znane problemy oraz sposoby ich obejścia
   2.1 Atrybuty style i styleClass znacznika jspPanel nie są już dostępne
   2.2 Podczas importowania projektu jest wyświetlane niedokładne okno dialogowe ostrzeżenia
   2.3 Wiele modeli ze składnikami Client Data na stronie
   2.4 Budowanie portletów korzystających ze składników Client Data w wersji 7.0 i nowszych
   2.5 Panel z zakładkami, którego wysokość jest określona w procentach
   2.6 Zakładki panelu z zakładkami w trybie ścisłym
   2.7 Znacznik hx:convertDateTime nie działa poprawnie z kalendarzami arabskimi
   2.8 Podczas określania docelowego środowiska wykonawczego WebSphere należy się upewnić, że został wybrany aspekt projektu WebSphere
   2.9 Wyrównanie kolumny JWL DataTable przy użyciu pliku loose.dtd i kolumn percentage-width (wartość procentowa-szerokość) jest niepoprawne
   2.10 W przypadku znacznika hx:panelDialog "względne" pozycjonowanie może nie działać, jeśli podstawowy znacznik użyty do pozycjonowania jest przewijany
   2.11 Tabela danych z włączonym wybieraniem wierszy nie może zostać umieszczona w panelu, w którym jest włączona opcja Model AJAX
   2.12 Znacznik ajaxExternalRequest może nie działać poprawnie w przeglądarce IE, jeśli identyfikator panelu na stronie docelowej nie jest zgodny z identyfikatorem panelu na stronie źródłowej
   2.13 Nie działa atrybut inProgresss dla znacznika hx:ajaxRefreshRequest i innych znaczników Model AJAX
   2.14 Znacznik hxinputHelperTypeahead nieprawidłowo obsługuje wyszukiwanie wartości zawierających znaki spacji, symbole procentu i znaki ampersand
   2.15 Znacznik hx:panelDialog może zostać niepoprawnie umieszczony w programie Firefox w wersji 1.5.0.8 lub nowszej
   2.16 Znacznik hx:pagerDeluxe niepoprawnie wyświetla grafikę, jeśli wartością parametru styleClass nie jest "pagerDeluxe"

1.0 Ograniczenia

1.1 Składniki Faces Client i Client Data są nieaktualne

Przedstawione poniżej składniki są już nieaktualne i ich używanie nie jest zalecane:

Elementy Tree <odc:tree> i Chart <odc:graphDraw> mogą obecnie korzystać ze składnika Server Data.

1.2 Migracja aplikacji JSF utworzonych w wersjach wcześniejszych niż wersja 7 produktu

W przypadku importowania aplikacji JSF utworzonej w wersji wcześniejszej niż wersja 7 produktu bez przeprowadzania migracji plików JAR JSF i kontynuowania tworzenia tej aplikacji, znaczniki, które pojawiły się w wersji 7, nie zostaną dołączone do plików JAR projektu i nie będą dostępne w czasie uruchamiania.  Należy się upewnić, czy została przeprowadzona migracja plików JAR utworzonych w wersjach wcześniejszych niż wersja 7.

1.3 Modyfikacja drzewa podczas przenoszenia z architektury WDO do SDO

Znacznik elementu sterującego drzewa <odc:treeNodeAttr> korzysta z innych wartości atrybutu className przy powiązaniu z danymi SDO i z innych przy powiązaniu z danymi WDO. Po migracji projektu z serwera korzystającego z technologii WDO (takiego jak WebSphere® Application Server 5.1) do jednego z serwerów korzystających z technologii SDO (takich jak WebSphere Application Server 6.1) najprostszym sposobem poprawienia tego błędu jest usunięcie i ponowne utworzenie wszystkich elementów sterujących drzewa. 

1.4 Znacznik hx:commandExButton wyświetla już poprawnie obraz

W wersji 6.0, jeśli w znaczniku <hx:commandExButton> typ był ustawiony na Wprowadź, była ustawiona etykieta i tylko jeden obraz tła (na przykład value="submit" image="button.gif"), renderowany był tylko obraz (a nie obraz i etykieta). Ten problem został naprawiony w wersji 7.0. Poprawka oznacza, że przyciski zawierające zarówno etykietę, jak i pojedynczy obraz tła, będą w wersji 7.0 wyświetlane w inny sposób niż ma to miejsce w wersji 6.0.

Analogicznie, jeśli w znaczniku <hx:commandExButton> typ był ustawiony na Resetuj oraz był pojedynczy obraz tła (lub obraz tła i etykieta), renderowany był tylko obraz, a przycisk był traktowany jak przycisk wprowadzania (typ przycisku był ignorowany). Ten problem został naprawiony w wersji 7.0. Poprawka oznacza, że przyciski typu Reset będą teraz resetowały stronę, a nie ją wprowadzały.

2.0 Znane problemy oraz sposoby ich obejścia

2.1 Atrybuty style i styleClass znacznika jspPanel nie są już dostępne

Atrybuty style i styleClass znacznika <jspPanel> nie są już dostępne. Atrybuty nie są wykorzystywane do renderowania składnika panelu JSP.

W przypadku importowania aplikacji JSF utworzonej w poprzedniej wersji tego produktu, w znacznikach <jspPanel> zostaną wyświetlone błędy. Aby poprawić błędy, należy usunąć atrybuty style i styleClass ze wszystkich znaczników <jspPanel> w projekcie, edytując plik źródłowy JSP w widoku Źródło.

2.2 Podczas importowania projektu jest wyświetlane niedokładne okno dialogowe ostrzeżenia

Podczas importowania do obszaru roboczego projektów utworzonych za pomocą poprzedniej wersji produktu może zostać wyświetlone wywoływane okno dialogowe zawierające informację, że została zainstalowana obsługa Faces, ale dla projektu nie zostało wybrane żadne docelowe środowisko wykonawcze. W niektórych przypadkach to ostrzeżenie jest nieadekwatne, a środowisko wykonawcze będzie poprawnie zdefiniowane po zakończeniu procesu migracji. Aby sprawdzić, czy środowisko wykonawcze jest skonfigurowane, kliknij prawym przyciskiem myszy opcje: Projekt > Właściwości i wybierz opcję Docelowe środowiska wykonawcze. Jeśli obok dowolnego ze zdefiniowanych serwerów zaznaczone jest pole wyboru, dalsze działanie nie jest wymagane. W przeciwnym przypadku należy wybrać jeden z serwerów.

2.3 Wiele modeli ze składnikami Client Data na stronie

Uwaga: To obejście nie jest wymagane, jeśli modele ze składnikami Client Data tworzone są z tego samego węzła danych strony lub z węzłów danych strony o tej samej nazwie.

W wersji 7.0, gdy na stronie jest wiele modeli danych klienta utworzonych z tych samych klas komponentów bean, podczas generowania (lub ponownego generowania) zostaną błędnie utworzone drugi plik ecore i emap dla drugiego modelu. Zgodnie z podręcznikiem migracji podczas migrowania projektów danych klienta modele ze składnikami Client Data powinny być generowane ponownie, co może wpłynąć na migrowane projekty ze stronami zawierającymi więcej niż jeden model ze składnikiem Client Data. Prosty scenariusz jest następujący:

  1. Utwórz dwie strony danych dla komponentu bean java.util.Date, na przykład mojeDane1 i mojeDane2.
  2. Dla danych każdej strony utwórz model danych klienta o tej samej nazwie w tej kolejności: najpierw mojeDane1, a potem mojeDane2.

Obejście: Aby zapewnić działanie strony dla obu modeli, należy usunąć pliki mojeDane2.ecore i mojeDane2.emap z pakietu com.ibm.dynwdo4jsmediators i odpowiednie wpisy w pliku OdysseyBrowserFramework.properties.

2.4 Budowanie portletów korzystających ze składników Client Data w wersji 7.0 i nowszych

Składniki Client Data wyprowadzają na stronę dużą ilość kodu JavaScript. W poprzednich wersjach skrypty JavaScript nie były kodowane. Oznacza to, że jeśli składnik Client Data był wykorzystywany w wielu portletach z użyciem tego samego źródła danych strony, dane wyjściowe JavaScript na stronie były takie same dla wszystkich portletów.

Takie zachowanie, gdzie dwa portlety są powiązane ze składnikiem Client Data, może objawiać się wiązaniem do tego samego obiektu Client Data (druga sekcja skryptu JavaScript nadpisze pierwszą). To z kolei umożliwia interakcję dwóch portletów, gdzie zmiana w jednym z nich będzie reprezentowana w obu.

Jest to problematyczne, jeśli na stronie powinno być wiele portletów używających obiektów Client Data i działających niezależnie od siebie. Jeśli na tej samej stronie znajdują się dwa portlety korzystające ze składnika Client Data z różnymi źródłami danych strony, wystąpią błędy JavaScript. Może to również spowodować brak wyświetlania grafiki jednego z portletów.

Aby naprawić te problemy i umożliwić działanie portletów Client Data zgodnie ze specyfikacją WSRP, zmienne JavaScript składnika Client Data muszą być kodowane, tak aby były unikalne dla każdego portletu. Umożliwia to sekcjom JavaScript składnika Client Data pracować niezależnie od siebie.

W wersji 7.0 wszystkie dane klienta będą kodowane.

Jeśli składnik Client Data ma być współużytkowany między portletami na stronie, należy zaktualizować plik web.xml, podając następujące parametry kontekstu:

    <context-param>
        <param-name>com.ibm.faces.ENCODE_DATA</param-name>
        <param-value>false</param-value>
        <description></description>
   </context-param>

Ustawienie wartości parametru <param-value> na false powoduje usunięcie kodowania obiektów Client Data.

Korzystanie z parametru Encode_Data i jego wpływ na komponenty Wykres i Drzewo danych korzystające z danych strony

Składniki Wykres i Drzewo danych używają danych strony, wstawiając na stronę obiekt danych XML. Obiekt Page Data dla składników Wykres i Drzewo danych jest ściśle powiązany z obiektem Client Data dla tych składników. Domyślnie dane te są zakodowane. Jeśli w pliku web.xml zostanie ustawiony parametr <context-param> przedstawiony poniżej, który zazwyczaj wykorzystywany jest do usuwania kodowania składnika Client Data, spowoduje to także usunięcie kodowania danych strony dla komponentów Wykres Drzewo danych. Nie ma to wpływu na żadne inne składniki korzystające z danych strony. Pozostawienie danych strony bez kodowania, gdy na stronie znajdują się dwa portlety zawierające komponenty Wykres lub Drzewo danych, może spowodować problemy. Te błędy obejmują błędy JavaScript i/lub brak możliwości poprawnego wyświetlenia jednego z portletów.

Podobnie jak w przypadku składnika Client Data, aby zakodować te dane, umożliwiając niezależne działanie na stronie dwóch portletów i obsługę WSRP, z pliku web.xml należy usunąć poniższy parametr <context-param> lub ustawić parametr <param-value> na wartość true:

    <context-param>
        <param-name>com.ibm.faces.ENCODE_DATA</param-name>
        <param-value>true</param-value>
        <description></description>
    </context-param> 

2.5 Panel z zakładkami, którego wysokość jest określona w procentach

U góry strony umieszczany jest następujący kod:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Powoduje to przejście przeglądarek WWW w tryb standardowy. W trybie standardowym elementy HTML i body są przypisane do swojej treści, nie zapełniają okna, tak jak w trybie quirks (domyślnym trybie HTML).

Gdy na stronie umieszczony jest autonomiczny panel z zakładkami, którego wysokość ustalona jest procentowo, spowoduje to problem z wyświetlaniem związany z wysokością panelu.

Aby naprawić ten problem, panel z zakładkami należy umieścić w kontenerze z ustawioną wysokością lub zmienić deklarację doctype znajdującą się u góry strony na:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

2.6 Zakładki panelu z zakładkami w trybie ścisłym

Występują problemy z wyświetlaniem zakładek w trybie standardowym, gdy parametr doctype jest ustawiony na:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

Można to poprawić, zmieniając deklarację doctype na:

     <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

2.7 Znacznik hx:convertDateTime nie działa poprawnie z kalendarzami arabskimi

Znacznik <hx:convertDateTime> nie generuje poprawnego kodu JavaScript, gdy kalendarz jest ustawiony na typ arabski. W wyniku tego niepoprawnie działa sprawdzanie poprawności po stronie klienta, podpowiadanie danych wejściowych, komponent pomocy przy wybieraniu daty oraz mały kalendarz. Po zainicjowaniu wygenerowanego skryptu JavaScript jest wyświetlany błąd (lub składnik nie działa poprawnie).

Obejście: Nie należy włączać sprawdzenia poprawności lub monitowania po stronie klienta. Nie należy włączać elementu pomocniczego pola wyboru daty, jeśli kalendarz arabski jest używany z konwerterem.

2.8 Podczas określania docelowego środowiska wykonawczego WebSphere® należy się upewnić, że został wybrany aspekt projektu WebSphere

Podczas określania docelowego środowiska wykonawczego serwera WebSphere® należy się upewnić, że dla danego projektu WWW został wybrany aspekt WWW WebSphere (Współistnienie). 

Obejście: Aspekt należy wybrać podczas tworzenia projektu na drugiej stronie kreatora dynamicznego projektu WWW lub za pośrednictwem strony Aspekty projektu okna dialogowego Właściwości projektu, jeśli projekt już istnieje. Podczas tworzenia projektu WWW przeznaczonego dla serwera WebSphere, jeśli z listy rozwijanej Konfiguracje na pierwszej stronie kreatora projektu zostanie wybrana opcja "Projekt Faces" lub "Dynamiczny projekt WWW z narzędziem XDoclet", aspekt WWW WebSphere (Współistnienie) nie zostanie wybrany automatycznie.  Można przejść do następnej strony kreatora, aby wybrać ten aspekt. Jeśli z listy Konfiguracje zostanie wybrana opcja "<custom>", aspekt zostanie poprawnie wybrany podczas określania miejsca docelowego środowiska wykonawczego WebSphere.

2.9 Wyrównanie kolumny JWL DataTable przy użyciu pliku loose.dtd i kolumn wartość procentowa-szerokość jest niepoprawne

Jeśli jedna lub więcej kolumn w tabeli ma ustawioną szerokość w procentach podczas korzystania ze znacznika <hx:columnEx> wewnątrz znacznika <hx:dataTableEx> przy włączonej opcji przewijania pionowego (ustawiony jest parametr scrollSize), w wyświetlanej tabeli nagłówki kolumn oraz zawartość kolumn może nie być wyrównana, gdy deklaracja doctype strony zostanie zinterpretowana przez przeglądarkę jako typ W3C standard (w przeciwieństwie do typu W3C transitional). Zdarzy się to na przykład, jeśli parametr doctype zawiera deklarację loose.dtd.
Obejście: Należy ustalić stałą szerokość kolumny (nie w oparciu o wartości procentowe) lub upewnić się, że deklaracja doctype jest rozpoznawana jako deklaracja doctype typu transitional (na przykład przez usunięcie deklaracji loose.dtd).

2.10 W przypadku znacznika hx:panelDialog "względne" pozycjonowanie może nie działać, jeśli podstawowy znacznik użyty do pozycjonowania jest przewijany

Jeśli pozycjonowanie w znaczniku <hx:panelDialog> (poziome lub pionowe) jest ustawione na wartość relative, a znacznik używany jako podstawa do pozycjonowania (znacznik, względem którego pozycjonowane jest okno dialogowe) znajduje się na stronie, która jest przewijana w taki sposób, że znacznik znajduje się na ekranie, a strona nie jest przewijana do góry, wyświetlane okno dialogowe może być pozycjonowane niepoprawnie (zazwyczaj umieszczane zbyt wysoko lub zbyt daleko po lewej).

Obejście: Jeśli wymagane jest pozycjonowanie względne, znacznik podstawowy powinien się znajdować niedaleko górnej krawędzi strony. Alternatywnie można użyć innego typu pozycjonowania.

2.11 Tabela danych z włączonym wybieraniem wierszy nie może zostać umieszczona w panelu, w którym jest włączona opcja Model AJAX

Jeśli tabela danych (znacznik <h:dataTable> lub <hx:dataTableEx>) znajduje się na panelu z włączoną obsługą technologii AJAX oraz ma włączoną opcję wybierania wierszy (w tabeli znajduje się znacznik <hx:inputRowSelect>), pola wyboru w kolumnie wybierania nie będą działały poprawnie, gdy tabela zostanie ponownie pobrana za pośrednictwem technologii AJAX. Będzie działała poprawnie tylko podczas pierwszego wyświetlenia.

Obejście: Aktualnie nie jest znane żadne obejście tego problemu. Nie należy umieszczać tabeli na panelu z włączoną obsługą technologii AJAX.

2.12 Znacznik ajaxExternalRequest może nie działać poprawnie w przeglądarce IE, jeśli identyfikator panelu na stronie docelowej nie jest zgodny z identyfikatorem panelu na stronie źródłowej

Znacznik <hx:ajaxExternalRequest> może nie działać poprawnie w przeglądarce Internet Explorer (IE), jeśli atrybut źródłowy jest używany do określania identyfikatora panelu do pobrania na panelu docelowym i różni się od identyfikatora panelu, do którego przyłączony jest znacznik <hx:ajaxExternalRequest> na stronie źródłowej. Na przykład: <hx:panel id="panel1"><hx:ajaxExternalRequest  source="panel999" /><hx:panel>. Problem występuje tylko w przeglądarce IE i tylko jeśli panel docelowy jest siatką, polem lub układem (panelem, który jest wyświetlany w formie tabeli HTML).

Obejście: Należy się upewnić, że identyfikatory są takie same lub umieścić panel docelowy w obiekcie panelGroup.

2.13 Nie działa atrybut inProgresss dla znacznika hx:ajaxRefreshRequest i innych znaczników Model AJAX

Nie działa atrybut inProgresss znaczników <hx:ajaxRefreshRequest>, <hx:ajaxRefreshSubmit>, <hx:ajaxExternalRequest> i <hx:inputHelperTypeahead>. Ustawienie wartości tego atrybutu nie daje żadnego efektu. Aby zapewnić zgodność z przyszłymi wersjami, nie należy ustawiać jego wartości.

2.14 Znacznik hxinputHelperTypeahead nieprawidłowo obsługuje wyszukiwanie wartości zawierających znaki spacji, symbole procentu i znaki ampersand

Gdy znacznik <hx:inputHelperTypeahead> jest dołączony do pola wejściowego, jeśli znak spacji i/lub znaki interpunkcyjne, takie jak znak ampersand i procent, zostaną wprowadzone do tego pola, skonstruowana lista sugestii nie będzie zawierała "dopasowań" zawierających te znaki. Jeśli na przykład użytkownik wpisze %, nie zostaną zwrócone żadne dopasowania, nawet jeśli w używanym "słowniku" istnieją słowa rozpoczynające się od znaku %.

2.15 Znacznik hx:panelDialog może zostać niepoprawnie umieszczony w programie Firefox w wersji 1.5.0.8 lub nowszej

Zmiana zachowania niektórych atrybutów DOM HTML od wersji 1.5.0.8 programu Firefox może powodować niepoprawne umieszczenie okna dialogowego (panelDialog) podczas jego renderowania w programie Firefox. Problem występuje najczęściej, gdy okno dialogowe jest pozycjonowane względnie, ale może wystąpić też w innych przypadkach, gdy wielkość treści jest "mniejsza niż" wysokość okna przeglądarki (to znaczy, gdy strony nie można przewijać w pionie).

Obejście: Dodanie treści (nawet pustej, takiej jak obszar <div> z ustawioną wysokością), tak aby pionowy pasek przewijania był zawsze aktywny, może pomóc obejść ten problem (zależy to od dokładnych wymiarów okna przeglądarki oraz treści).

2.16 Znacznik hx:pagerDeluxe niepoprawnie wyświetla grafikę, jeśli wartością parametru styleClass nie jest "pagerDeluxe"

Znacznik <hx:pagerDeluxe> nie wyświetla poprawnie kodu HTML, jeśli atrybut styleClass ma wartość inną niż domyślna klasa pagerDeluxe. Przyciski w programie stronicującym zawsze będą wyświetlane z nazwami klas, które korzystają z domyślnej nazwy klasy.

Sposób obejścia: