/ / Czy JSF powinien przetwarzać niewyrenderowane komponenty podczas ponownego renderowania Ajax? - jsf

Czy JSF powinien przetwarzać nierenderowane komponenty podczas ponownego renderowania Ajax? - jsf

Moja strona ma funkcję Ajax show / hide. Podczas ładowania strony początkowej moje metody komponentu bean, które są wewnątrz nierenderowanego <f:subview> lub <h:panelGroup> nie są nazywane. Po ponownym renderowaniu @form przy użyciu Ajax wywoływane są moje metody komponentu bean, chociaż odpowiednie widoki podrzędne nie są renderowane. Czy to powinno się zdarzyć? (Używam JSF 2.2)

Odpowiedzi:

0 dla odpowiedzi № 1

Jest to oczekiwane zachowanie zgodnie z powyższym komentarzem. Niestety wiąże się z jakimś brzydkim zachowaniem.

Jeśli jesteś obiektem, który robi coś podczas korzystania z listy, będzie działał dobrze przy pierwszym żądaniu. Nawet jeśli podjąłeś środki ostrożności, ładując coś za pomocą f:event nie uratuje cię to przy następującym żądaniu AJAX.

Przykład: Jeśli używasz JPA z każdą fasolą zarządzaną dla zakresu żądania i ta fasola ma leniwą kolekcję, która nie jest renderowana, spowoduje to:

Żądanie 1: Nierenderowane komponenty nie zostaną dotknięte, tj. Kolekcje Lazy nie zostaną zainicjowane

Żądanie 2 (Ajax): JSF spróbuje przywrócić pełny widok, wywołując niezaładowaną leniwą kolekcję, co spowoduje wyjątek.