SytuacjaNiewłaściwy JSF 2 ID Chaining
JavaServer Faceswersja: 2.1.6
Mam komponent kompozytowy rodzica z dwóch zagnieżdżonych cc. Jedna z nich zawiera grupę HtmlPanelGroup, która ma powiązanie z komponentem. Używam tego wiązania do programowego dodawania obiektów HtmlCommandLink do grupy HtmlPanelG.
Nazwijmy jakieś identyfikatory:
- dominującej za cc dominującej
- CHILD_FIRST na pierwsze dziecko cc, zagnieżdżone w RODZICA
- CHILD_SECOND na drugie dziecko cc, zagnieżdżone w RODZICA
- GROUP dla grupy Panel, zagnieżdżonej w CHILD_SECOND
- LINK_1 dla pierwszego obiektu HtmlCommandLink, programowo dodanego do grupy
Oczekiwanie
Spodziewam następujące ID Chaining (z domyślnym javax.faces.SEPARATOR_CHAR):
PARENT (Composite Component, declarative)
PARENT:CHILD_FIRST (Composite Component, declarative)
PARENT:CHILD_SECOND (Component Component, declarative)
PARENT:CHILD_SECOND:GROUP (HtmlPanelGroup, declarative)
PARENT:CHILD_SECOND:GROUP:LINK_1 (HtmlCommandLink, programmatically)
Problem
Identyfikator HtmlCommandLink-Object jest źle na pierwszej stronie. Zamiast "PARENT: CHILD_SECOND: GROUP: LINK_1" identyfikator to tylko "CHILD_SECOND: GROUP: LINK_1". Po odświeżeniu strony identyfikator jest prawidłowy "PARENT: CHILD_SECOND: GROUP: LINK_1". W rzeczywistości w każdym komponencie drugiego komponentu kompozytowego ("CHILD_SECOND") brakuje pierwszej części identyfikatora ("PARENT"). Po odświeżeniu wszystkie identyfikatory są poprawne.
Rozwiązanie
mogę automatycznie odświeżyć stronę po pierwszej wizycie. Ale nie chcę.
Trudno jest mi zrozumieć konkretny problem, ponieważ 'HtmlPanelGroup' nie jest komponentem' NamingContainer' i dlatego nie powinien poprzedzać swojego identyfikatora komendą "link children". Nie powinieneś widzieć "GROUP:" w identyfikatorze dzieci z łączem poleceń w ogóle. Prawdziwa SSCCE ogromnie pomogłaby w lepszym zrozumieniu konkretnego problemu. – BalusC
Dlaczego, na litość boską, to pytanie ma 10 przegranych? Pytanie jest w aktualnej formie bez ważnej SSCCE, która nie ma żadnego sensu, a zatem nie odpowiada. Szkoda, że nie mogę ponownie oddać wygasłego głosowania zamkniętego. – BalusC
@Bluasc Myślę, że masz rację, trudno jest zorientować się, że aktualna grupa PanelGroup zawiera składnik lub nie. – Sheel