Tôi đang làm việc trên một lối vào JavaScript được AJAX kích hoạt để thực hiện cuộc gọi đến một chương trình phụ trợ bằng Java được viết bằng Struts. Vấn đề của tôi là khi backend ném một ngoại lệ, máy khách vẫn thấy mã phản hồi HTTP "OK" thay vì "500 Lỗi Máy chủ Nội bộ" như mong đợi.Làm cho Struts gửi 500 lỗi máy chủ nội bộ khi ngoại lệ bị ném
Việc này thường xuyên liên tục vì thư viện JavaScript của khách hàng bên thứ ba phụ thuộc vào mã trạng thái HTTP để xác định xem có gì sai với cuộc gọi AJAX hay không, như hầu hết các thư viện hiện đại thường làm. Các lỗi vượt qua không bị phát hiện cho đến khi mã của tôi thổi lên khi nó cố phân tích cú pháp thông thường là JSON.
Tôi thực sự muốn tránh hack thư viện JS khách hàng của mình để xử lý các lỗi này một cách duyên dáng. Vì vậy, sau đó, làm thế nào tôi có thể làm cho Struts cho tôi một mã trạng thái 500 khi có được một ngoại lệ unhandled trong backend? Đây có phải là hành vi mặc định của Struts không?
Chỉnh sửa: Mã phía máy khách không liên quan trong trường hợp này. Tôi cần phải sửa chữa máy chủ để nó gửi mã trạng thái thích hợp khi các ngoại lệ chưa được giải quyết xảy ra. Cảm ơn!
Thư viện phía máy khách là ExtJS nhưng điều đó không quan trọng. Máy chủ là những gì có vấn đề. Struts gửi một báo cáo lỗi HTML và một mã trạng thái "200 OK" khi có một ngoại lệ chưa được xử lý ở phía máy chủ, và đó là những gì tôi đang cố sửa chữa. HTML tôi có thể xử lý, nhưng Struts đã có thể gửi mã 500 khi lỗi xảy ra, không phải mã 200. Cảm ơn! – curtisdf
'WebApplicationException()' gây ra một mã lỗi HTTP 500. bạn đã thử ném cái này chưa? – tusar
Về phía máy chủ, tôi muốn tránh phải chèn các khối try/catch ở khắp mọi nơi. Tôi chỉ cần một số loại cấu hình mà nói với Struts, "làm điều đúng (tm) và cung cấp cho tôi một mã phản hồi 500 bất cứ khi nào bạn gửi các báo cáo vấn đề ngớ ngẩn." – curtisdf