錯(cuò)誤:java.lang.NoSuchMethodException:java.lang.Long()在春季MVC中
這@modelattribute('studentId') LongstudentId是問題的根源,因?yàn)閟pring找不到可以提供此Long對(duì)象的方法,因此它試圖實(shí)例化一個(gè)對(duì)象并將其作為方法參數(shù)傳遞。 您可以:
@RequestMapping(value = '/read.html') public String readStudent(Model model,Long studentId) {Student student = null;studentId = 2l;try { student = serviceFile.readStudent(studentId);} catch(Exception e){ model.addAttribute('message', 'Some thing went wrong !!!! Exception occured'); return 'message';}model.addAttribute('student', student);return 'read'; } 在您的 中
@modelattribute public void provideStudentId(Model model){model.addAttribute('studentId', new Long(1)); }
官方文件
@RequestMapping(path = '/owners/{ownerId}/pets/{petId}/edit', method = RequestMethod.POST) public String processSubmit(@modelattribute Pet pet) { }
給定以上示例,Pet實(shí)例可以從哪里來?有幾種選擇:
由于使用@SessionAttributes,它可能已經(jīng)在模型中-請(qǐng)參閱“使用@SessionAttributes在請(qǐng)求之間的HTTP會(huì)話中存儲(chǔ)模型屬性”一節(jié)。由于同一控制器中的@modelattribute方法,它可能已經(jīng)在模型中-如上一節(jié)中所述。可以基于URI模板變量和類型轉(zhuǎn)換器(在下面更詳細(xì)地說明)來檢索它。可以使用其默認(rèn)構(gòu)造函數(shù)實(shí)例化它。如果studentId是參數(shù)的名字從你可以使用UI發(fā)送@RequestParam這樣
@RequestMapping(value = '/read.html') public String readStudent(Model model, @RequestParam('studentId') Long studentId) {Student student = null;studentId = 2l;try { student = serviceFile.readStudent(studentId);} catch(Exception e) { model.addAttribute('message', 'Some thing went wrong !!!! Exception occoured'); return 'message';} model.addAttribute('student', student);return 'read'; }解決方法
從數(shù)據(jù)庫讀取學(xué)生對(duì)象時(shí)出現(xiàn)此錯(cuò)誤。
org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.lang.Long]: No default constructor found; nested exception is java.lang.NoSuchMethodException: java.lang.Long.<init>()org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:107)
全棧跟蹤:
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.lang.Long]: No default constructor found; nested exception is java.lang.NoSuchMethodException: java.lang.Long.<init>() org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)root causeorg.springframework.beans.BeanInstantiationException: Failed to instantiate [java.lang.Long]: No default constructor found; nested exception is java.lang.NoSuchMethodException: java.lang.Long.<init>() org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:107) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveModelAttribute(HandlerMethodInvoker.java:775) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:368) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:172) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)root causejava.lang.NoSuchMethodException: java.lang.Long.<init>() java.lang.Class.getConstructor0(Class.java:3082) java.lang.Class.getDeclaredConstructor(Class.java:2178) org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:104) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveModelAttribute(HandlerMethodInvoker.java:775) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.resolveHandlerArguments(HandlerMethodInvoker.java:368) org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:172) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:446) org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:434) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:943) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:877) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
學(xué)生.java
@Entity@Table(name='Student')public class Student implements Serializable{ private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy=GenerationType.AUTO) @Column(name='studentId') Long studentId; @Column(name='studentName') String studentName;
Controller.java
@RequestMapping(value = '/read.html') public String readStudent(Model model,@ModelAttribute('studentId') Long studentId) {Student student = null;studentId = 2l;try{ student = serviceFile.readStudent(studentId);}catch(Exception e){ model.addAttribute('message','Some thing went wrong !!!! Exception occoured'); return 'message';} model.addAttribute('student',student);return 'read'; }
daoImpl.java
@Repository@Transactionalpublic class DaoImplFile implements DaoFile { private EntityManager entityManager; public EntityManager getEntityManager() {return entityManager; } @PersistenceContext public void setEntityManager(EntityManager entityManager) {this.entityManager = entityManager; } @Override public Student read(Long studentId) throws NullPointerException { Student student = entityManager.find(Student.class,studentId);if (student!=null) { return student;} else { return null;} }
相關(guān)文章:
1. 請(qǐng)教使用PDO連接MSSQL數(shù)據(jù)庫插入是亂碼問題?2. node.js - nodejs開發(fā)中常用的連接mysql的庫3. Python爬蟲如何爬取span和span中間的內(nèi)容并分別存入字典里?4. mysql - 分庫分表、分區(qū)、讀寫分離 這些都是用在什么場景下 ,會(huì)帶來哪些效率或者其他方面的好處5. 視頻文件不能播放,怎么辦?6. python - 數(shù)據(jù)與循環(huán)次數(shù)對(duì)應(yīng)不上7. mysql - 把一個(gè)表中的數(shù)據(jù)count更新到另一個(gè)表里?8. 黑客 - Python模塊安全權(quán)限9. flask - python web中如何共享登錄狀態(tài)?10. mysql 查詢身份證號(hào)字段值有效的數(shù)據(jù)
