2009-06-07 24 views
6

Przez kilka godzin szukałem w usłudze Google Drive i usługach Google. Jednak gdy próbuję go zastosować, nie działa.Nie można przekierować za pomocą metody response.sendRedirect

Kod które mam wewnątrz strony jsp:

<% 
    String articleId = request.getParameter("article_id").toString(); 
    if(!articleId.matches("^[0-9]+$")) 
    { 
     response.sendRedirect("index.jsp"); 
    } 
%> 

wiem z debugowania, że ​​dzieła regexp i jeśli każdej chwili articleID nie jest liczba, tym if idzie do środka, jednak po osiągnięciu response.sendRedirect nie robi faktycznie przekierowuje.

Czy brakuje mi czegoś bardzo podstawowego w tym przypadku?

Z góry dziękuję.

Odpowiedz

22

Powinieneś return po przekierowanie:

response.sendRedirect("index.jsp"); 
return; 
+1

To było to. Dodanie zwrotu jest realizowane. Dziękuję Ci. – Dmitris

+5

Warto rozważyć "dlaczego" tego. SendRedirect() dodaje nagłówek do odpowiedzi HTTP i to wszystko. Jeśli następnie napiszesz treść odpowiedzi, przeglądarka może uznać nagłówek przekierowania za zbędny i zignorować go. Zawsze warto zastanowić się nad kolejnością wywoływania metod na obiekcie odpowiedzi, często może to prowadzić do trybów awarii nieparzystych bez oczywistego powodu. Interfejs API Servlet dość wyraźnie opisuje te potencjalne problemy. – skaffman

+0

[Mam też ten sam problem] (http://stackoverflow.com/q/9866964/1041341), próbowałem tego rozwiązania, ale nie woking, proszę o pomoc –

1

Czy jest zawartość przed tym skryptletem? Jeśli tak, przekierowanie nie działa.

Powszechnie stosowaną praktyką jest posiadanie takiej logiki wewnątrz serwletu lub innej klasy służącej jako kontroler, a pozostawienie strony JSP do obsługi tylko renderowania kodu HTML. Może również rozwiązać twój problem. Na przykład, patrz here

+0

[ja też mam ten sam problem] (http://stackoverflow.com/q/9866964/1041341), próbowałem tego rozwiązania, ale nie woking, proszę pomóżcie –

Powiązane problemy