java

แกัปัญหา Cannot call sendRedirect() after the response has been committed

เจอ exception java.lang.IllegalStateException: Cannot call sendRedirect() after... ตัวนี้มานานแล้วมันมักจะเกิดขึ้นเวลาเราพยายามจะ redirect/ส่งต่อ request ไปยังหน้าอื่นๆ มันเกิดขึ้นเพราะเราไม่เข้าใจการทำงานของมันดีพอ ศึกษาจากโค้ดนี้ private void doPost() { if (someCondition) { sendRedirect(); } forward(); // โค้ดตรงบล๊อกนี้ก็ยังคงถูกเรียกใช้งานอยู่ ถึงแม้ว่า if condition ข้างบนก็ถูกเรียกใช้งาน } เราจะคุ้นเคยกับการที่ว่า คิดว่าการเรียก sendRedirect() เหมือนกับการสั่ง System.exit() คือ program จบเลย แต่มันไม่ใช่อย่างนั้นน่ะสิ่ Error Cannot call sendRedirect() after the response has been committed จึงเกิดขึ้นเมื่อ forward() มันถูกเรียก เท่ากับว่าเราเรียก sendRedirect() แล้วยังไปเรียก forward() อีก exception มันจึงเกิดขึ้น
Read more