从数据库读取学生对象时出现此错误。
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 cause
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.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 cause
java.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)
学生.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
@Transactional
public 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;
}
}
这@ModelAttribute("studentId") Long studentId
是问题的根源,因为spring找不到可以提供此Long
对象的方法,因此它试图实例化一个对象并将其作为方法参数传递。
要解决此问题, 您可以:
从方法参数中删除@ModelAttribue
@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”;
}
创建将Long
在您的 控件 中 提供该 对象 的方法
@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实例可以从哪里来?有几种选择:
- 由于使用@SessionAttributes,它可能已经在模型中-
请参阅“使用@SessionAttributes在请求之间的HTTP会话中存储模型属性”一节。- 由于同一控制器中的@ModelAttribute方法,它可能已经在模型中-如上一节中所述。
- 可以基于URI模板变量和类型转换器(在下面更详细地说明)来检索它。
- 可以使用其默认构造函数实例化它。
编辑
如果studentId是参数的名字从你可以使用UI发送@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";
}
无论我尝试什么,发送给dispatcher servlet的请求都会返回HTTP 415错误。请求中将内容类型设置为application/json。 消息转换器似乎没有将请求映射到对象。 我的POM中有所有Jackson依赖项: 控制器类: 我试图在@刚需映射中添加接受、消费、生产,但没有成功。 我可以使用HttpServletRequest作为方法参数获得正确的JSON响应: 这一个在写入系统
我在向spring mvc控制器发送请求时遇到了一些问题。我有实体: 我收到一个HTTP/1.1400错误请求: 我做错了什么?
本文向大家介绍springmvc json类型转换错误解决方案,包括了springmvc json类型转换错误解决方案的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了springmvc json类型转换错误解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在用springmvc做json数据时,返回时,提示类型转换错误 如下,
这是我在SpringMVC中使用Maven的第一个应用程序。下面是应用程序结构。 控制器代码: 当我点击index.jsp中的链接时,页面应该被遍历到helloworld.jsp
我是Spring MVC的新手。在尝试基本程序时,我面临404错误页面。 Web.xml myDemoApp servletConfid。xml 控制器类 JSP页面 使用的URL: http://localhost/8050/springMVCDemo/getQuote.html 文件夹结构:[在此输入图像描述][1] 请告诉我这个错误的解决方法。
在我的Spring Boot 2.2. x Web应用程序中,我需要拦截404错误,以便在呈现错误页面或返回带有错误信息的json之前执行一些自定义逻辑。 实现这一点的正确方法是什么? 目前,我正在尝试使用类,但我不知道使用(如果抛出了任何异常)处理哪个异常。。。 注意:我已经尝试拦截,但这似乎不起作用...(未触发处理程序)。 我还在<code>应用程序中启用了此功能。属性: 还有其他建议吗?