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ı?
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 –
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
evet, Uzun olarak değiştirildi. –