2009-06-07 20 views
6

Tôi đã googled và googled trong nhiều giờ về cách thực hiện chuyển hướng trong jsp hoặc servlets. Tuy nhiên khi tôi cố gắng áp dụng nó, nó không hoạt động.Không thể chuyển hướng bằng response.sendRedirect

Mã mà tôi có trong trang jsp:

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

Tôi biết từ gỡ lỗi rằng công trình regexp và nếu bất cứ lúc nào, ArticleID không phải là số, if đi bên trong, tuy nhiên khi nó đạt đến response.sendRedirect nó doesn 't thực sự làm cho chuyển hướng.

Tôi có bỏ lỡ điều gì đó rất cơ bản trong trường hợp này không?

Xin cảm ơn trước.

Trả lời

22

Bạn nên return sau khi chuyển hướng:

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

Thats. Việc thêm trả lại được thực hiện. Cảm ơn bạn. – Dmitris

+5

Đó là giá trị xem xét "tại sao" này. SendRedirect() thêm một tiêu đề cho phản hồi HTTP, và đó là nó. Nếu sau đó bạn tiến hành viết một số nội dung cho phản hồi, thì trình duyệt có thể xem xét tiêu đề chuyển hướng là thừa và bỏ qua nó. Nó luôn luôn đáng xem xét thứ tự mà bạn gọi phương pháp trên đối tượng phản ứng, nó thường có thể dẫn đến chế độ thất bại lẻ mà không có một lý do rõ ràng. API Servlet khá rõ ràng khi mô tả những vấn đề tiềm tàng này. – skaffman

+0

[Tôi cũng có cùng một vấn đề] (http://stackoverflow.com/q/9866964/1041341), tôi đã thử giải pháp này nhưng không phải là woking ở đó, xin vui lòng giúp đỡ –

1

Có nội dung nào trước tập lệnh này không? Nếu vậy, chuyển hướng sẽ không hoạt động.

Ngoài ra, thực hành phổ biến là phải có logic như vậy bên trong một servlet hoặc lớp khác phục vụ như bộ điều khiển và để JSP chỉ xử lý việc hiển thị HTML. Nó cũng có thể giải quyết vấn đề của bạn. Ví dụ, xem here

+0

[Tôi cũng có cùng một vấn đề] (http://stackoverflow.com/q/9866964/1041341), tôi đã cố gắng nhưng giải pháp này không đùa ở đó, xin hãy giúp –

Các vấn đề liên quan