Pracuję z frameworkiem internetowym (uPortal), który obsługuje błędy, wyrzucając wyjątek, a następnie zawieszając. Struktura działa poprzez renderowanie XML do HTML. W przypadku wyjątku przeglądarka otrzymuje renderowaną treść do elementu szablonu XML, który się nie powiódł, a następnie przeglądarka po prostu siedzi i czeka na przekroczenie limitu czasu. Według naszej teorii treść jest wysyłana przed wystąpieniem błędu, co mnie zaskoczyło. Inne frameworki, nad którymi pracowałem, kończą renderowanie przed wysłaniem treści.Przekieruj stronę po wysłaniu zawartości
Moje pytanie brzmi, czy istnieje sposób przekierowania przeglądarki po przesłaniu zawartości? W takim przypadku jesteśmy w trakcie renderowania treści tagu <script>
, ale błąd może wystąpić potencjalnie w dowolnym miejscu w html.
Moja jedyna obecna myśl polega na wstrzyknięciu niektórych javascriptów na górze strony i próbie zmiany zachowania struktury w celu szybkiego zamknięcia i zamknięcia połączenia oraz dodania tagów </body>
i </html>
w przypadku wystąpienia błędu. Następnie wspomniany wyżej javascript będzie działał na pageload i wykryje, czy cała zawartość strony była tam i czy przekierowuje klienta, jeśli nie. Być może mógłby znaleźć specjalny ukryty div na dole strony.
Czy istnieją przykłady frameworków rozwiązujących ten problem w różny sposób lub osób używających podobnych frameworków w odniesieniu do tego problemu?
W jaki sposób inne ramy rozwiązują ten problem? Na przykład Spring? Czy wiosna nie czeka, aż widoki zostaną wyświetlone przed zapisaniem odpowiedzi? A może wszystkie frameworki mają ten problem? – xdhmoore
@xdhmoore na końcu Spring jest również oparty na technologii serwletów i, o ile wiem, po drugiej strategii wspomnianej w mojej odpowiedzi. To https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc może być interesujące, ale chodzi głównie o to, jak wysyłać na sensowną stronę błędu, a nie jak unikać lub wyjdź z wyjątku. – wero
Czy wiosna pozwala wychwycić wyjątki z warstwy widoku/jsp? Tam, gdzie jestem zdezorientowany, jest to, że w tej strukturze widzimy, jak strona zamraża się na wyjątek po załadowaniu całej poprzedniej zawartości.Myślałem, że inne frameworki, takie jak wiosna, renderowały wszystko przed rozpoczęciem zwracania treści (aby mogły zwrócić stronę błędu w przypadku wyjątku), ale ta struktura wydaje się zaczynać powracającą treść przed zakończeniem renderowania, co wydaje mi się twoja opcja 3 powyżej jedynego wyboru ... – xdhmoore