2015-05-05 8 views
16

Yay MVC framework kullanıyorum. Kural dışı durum atıldığında hata durumlarını günlüğe kaydetmek istiyorum, bu nedenle HanlderInterceptor'da afterCompletion yöntemi kullanılır.İlkbaharda HandlerInterceptor.afterCompletion() MVC, yanıt kodunu değiştir

@Override 
public void afterCompletion(final HttpServletRequest request, final HttpServletResponse response, final Object handler, final Exception ex) 
{ 
    final int responseCode = response.getStatus(); 
    s_logger_error.error("status code: " + responseCode); 
} 

Bu kod yerel makine üzerinde bir uygulama olarak çalıştırırsam, bu kod düzgün çalışır. Ancak, biz bunu sunucuya koyarken, UI doğru hata yanıtını alır (Benim durumumda 409), ancak bu yöntemde 200 olarak kaydedilir.

[o status=200 gösterir ama tepki olarak o 409 olan uzaktan debug'daki Resim] enter image description here

birileri tepki kodunda değişiklik olduğunda neden anlamaya yardımcı olabilir misiniz?

Sprint 1.1.7.RELEASE bahar önyükleme sürümü ve jetty-dağıtım-9.2.10.v20150310 kullanıyorum.

+0

kökenini belirtmek gerekir? HandlerInterceptor.afterCompletion() – medvedev1088

+0

409 durumunun HandlerInterceptor.afterCompletion() çağrılmasından sonra ayarlanmış olması olasıdır. – subhashlg26

+0

'HandlerInterceptor' uygulamasını uyguladınız mı yoksa uygulamalardan birini mi alt sınıflara ayırdınız? – Leon

cevap

1

response nesnesinin istisnasında setStatus yöntemini aradığınızdan emin olmanız gerekir.

Bunu iddia ederseniz, ilkbahar sürümü 1.1.11 sürümüne yükseltme yapmak sorununuzu düzeltebilir. Bu, fix ile ilgilidir. Düzeltme öncesinde, ErrorPageFilter, yönteminin ErrorWrapperResponse üzerinde açıkça çağrılmadığı durumlarda sarılmış yanıtın yanıt durumunu maskeliyordu.

Ben yükseltme sorununuzu çözecektir inanıyoruz neden

 if (this.errorToSend) { 
      return this.status; 
     } 
     else { 
      // If there was no error we need to trust the wrapped response 
      return super.getStatus(); 
     } 

basit return this.status den sabit changed sonra kodu. Eğer inat sorunu eğer

Son olarak, ErrorPageFilter içinden ayıklama 409 durum kodu ayarlanır sorun