2011-07-13 28 views
5

Spring MVC 3.0'da ModelAttribute ile garip bir sorun yaşıyorum. Uygulamayı localhost'ta dağıtırken, iyi çalışıyor. Ben bir uzak sunucuda uygulamanın dağıtımını Ama bu hataları ile, her kullanıcı erişim belirli bir işlemi başarısız:ModelAttribute ilkel olabilir mi?

ERROR: my.package.application.web.filter.ExceptionFilter - long.<init>() 
java.lang.NoSuchMethodException: long.<init>() 
     at java.lang.Class.getConstructor0(Class.java:2706) 
     at java.lang.Class.getDeclaredConstructor(Class.java:1985) 
     at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104) 
     at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveModelAttribute(HandlerMethodInvoker.java:762) 
     at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:356) 
     at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:153) 
     at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:426) 
     at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:414) 
     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790) 
     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719) 
     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644) 
     at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 

O denetleyicisi ModelAttribute init için kullanıcı kodu:

@ModelAttribute("id") 
    public long getUserId(HttpSession session) { 
     UserInfoHolder userHolder = (UserInfoHolder) session 
       .getAttribute("userHolder"); 
     long userId = userHolder.getUserId(); 
     return userId; 
    } 

Anlatabildiğim kadarıyla, hata yerel iş istasyonumda çoğaltılamaz. Ve eylem çağrılmadan önce olur. HandlerMethodInvoker.java (hat 762) 'de bakıyor

, bu satır göreceksiniz:

bindObject = BeanUtils.instantiateClass(paramType); 

benim Deneyimli akran bu hat, soruna neden olduğuna inanmaktadır ilkel tip ModelAttribute (uzun) kokan çünkü Bir kurucu var. Bence bu hak belki de doğru, fakat web uygulamasının yerel sunucumda iyi çalıştığını nasıl açıklayabilirim?

ModelAttribute ilkel veri türünü destekleyip desteklemediğini, ancak iyi sonuçların bulunmadığını araştırmayı denedim. Bu konu hakkında tecrübesi olan var mı?

cevap

5

Sadece biraz düşünebileceğim umuduyla bazı düşüncelere atıyorum.

java.lang.NoSuchMethodException: long.<init>() 

çalışır mı sen Long uzun den kullanılan türünü değiştirmek durumunda:

yığın izleme

gerçekten uzun süre yapıcı yöntemini çağırmak için çalıştığını gösterdiğini?

İstemcide değil, yerel olarak çalışan şeyler için. Java sürümü aynı mı?

+0

Zaten denedim, ancak Uzun tür için aynı hata ile hala başarısız. Java sürümü aynıdır: Java 1.6 –

+0

Bunu yaptığınızda, HandlerMethodInvoker.java'da (satır 762) bir kesme noktası ayarladınız ve paramType'ın ne olduğunu kontrol ettiniz mi? Long'a da mı değişti? – Raku

+0

evet, Uzun olarak değiştirildi. –