Sto lavorando su un frontend JavaScript abilitato per AJAX che effettua chiamate a un backend Java scritto con Struts. Il mio problema è che quando il backend lancia un'eccezione, il client vede ancora un codice di risposta HTTP "200 OK" invece di "500 Internal Server Error" come ci si aspetterebbe.Making Struts invia 500 Internal Server Error quando vengono lanciate eccezioni
Questo mi è inciampare ripetutamente perché il mio cliente 3rd-party libreria JavaScript dipende codici di stato HTTP per determinare se qualcosa non va con una chiamata AJAX, come la maggior parte delle biblioteche moderne normalmente. Gli errori passano inosservati fino a quando il mio codice esplode quando tenta di analizzare quello che normalmente sarebbe JSON.
Voglio davvero evitare di hackerare la libreria JS del mio client per gestire con grazia questi errori. Allora, come posso far sì che Struts mi dia un codice di stato di 500 quando c'è un'eccezione non gestita nel back-end? Non dovrebbe questo essere il comportamento predefinito di Struts?
Modifica: In questo caso il codice lato client è irrilevante. Ho bisogno di riparare il server in modo che invii il codice di stato appropriato quando si verificano eccezioni non gestite. Grazie!
La libreria sul lato client è ExtJS ma non importa. Il server è ciò che sta avendo il problema. Struts invia un report di errore HTML e un codice di stato "200 OK" quando c'è un'eccezione non gestita sul lato server, ed è quello che sto cercando di risolvere. L'HTML che posso gestire, ma Struts deve essere in grado di inviare il codice 500 quando si verificano errori, non il codice 200. Grazie! – curtisdf
'WebApplicationException()' provoca un codice di errore HTTP 500. hai provato a lanciare questo? – tusar
Sul lato server, voglio evitare di dover inserire try/catch blocchi ovunque. Ho solo bisogno di un qualche tipo di configurazione che indichi a Struts, "fai la cosa giusta (tm) e dammi un codice di risposta 500 ogni volta che invii questi stupidi rapporti sui problemi". – curtisdf