前端ajax
<%--
Created by IntelliJ IDEA.
User: 汪海洋
Date: 2023/8/14
Time: 12:43
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>评论区</title>
</head>
<body>
ID:<input type="text" name="id" id="id"/><br><br>
评论:<textarea name="comment" id="words"></textarea><br><br>
<button onclick="setDate()">发表评论</button>
<div id="comments"></div>
</body>
<script type="text/javascript">
function setDate() {
const time = new Date();
const data = {
id : document.getElementById("id").value,
comment : document.getElementById("words").value,
time : time.toLocaleDateString()
}
var xhr =new XMLHttpRequest()
xhr.open("POST","/addComment",true)
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onreadystatechange = function () {
if(xhr.status === 200 && xhr.readyState === 4){
console.log("请求发送成功,服务器端口响应全部数据!")
}
}
xhr.send(JSON.stringify(data));
xhr.timeout = 2000
xhr.timeout =function () {
alert("超时!")
}
xhr.onerror =function () {
alert("网络异常!")
}
}
// setInterval(getComments,1000);
getComments()
function getComments() {
// const id = document.getElementById("comments").value;
const id = document.getElementById("comments")
const xhr = new XMLHttpRequest();
xhr.open("GET","loadComments?id=1",true);
xhr.onreadystatechange = function (){
if (xhr.status === 200 && xhr.readyState ===4){
let data = xhr.response.list
console.log(data)
for(let i =0 ; i<data.length ; i++){
id.innerHTML = data[i].id+"<br>"+
data[i].comment+"<br>"+
data[i].time+"<br>"
}
}
}
xhr.send()
xhr.timeout = 2000
xhr.timeout =function () {
alert("超时!")
}
xhr.onerror =function () {
alert("网络异常!")
}
}
</script>
</html>
后端
package com.experience.controller;
import com.experience.entity.Comment;
import com.experience.service.Comment_load_service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.testng.annotations.Test;
import java.util.List;
/**
* @author 汪海洋
*/
@Controller
public class Comment_load_Controller {
@Autowired
Comment_load_service comment_load_service;
@RequestMapping("/loadComments")
@ResponseBody
public void show(@RequestParam(value = "id", required = true) int id) {
List<Comment> list = comment_load_service.getComments(id);
for (Comment comment : list) {
System.out.println(comment.toString()
);
}
}
}
错误
HTTP状态 500 - 内部服务器错误
类型 异常报告
消息 Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class java.lang.Integer'
描述 服务器遇到一个意外的情况,阻止它完成请求。
例外情况
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class java.lang.Integer'
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
根本原因。
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class java.lang.Integer'
org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:96)
org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)
jdk.proxy3/jdk.proxy3.$Proxy16.selectList(Unknown Source)
org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)
org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:139)
org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:76)
org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
jdk.proxy3/jdk.proxy3.$Proxy19.getComments(Unknown Source)
com.experience.service.impl.Comment_load_service_impl.getComments(Comment_load_service_impl.java:17)
com.experience.controller.Comment_load_Controller.show(Comment_load_Controller.java:24)
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
java.base/java.lang.reflect.Method.invoke(Method.java:578)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
根本原因。
org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'id' in 'class java.lang.Integer'
org.apache.ibatis.reflection.Reflector.getGetInvoker(Reflector.java:419)
org.apache.ibatis.reflection.MetaClass.getGetInvoker(MetaClass.java:164)
org.apache.ibatis.reflection.wrapper.BeanWrapper.getBeanProperty(BeanWrapper.java:162)
org.apache.ibatis.reflection.wrapper.BeanWrapper.get(BeanWrapper.java:49)
org.apache.ibatis.reflection.MetaObject.getValue(MetaObject.java:122)
org.apache.ibatis.scripting.xmltags.DynamicContext$ContextMap.get(DynamicContext.java:94)
org.apache.ibatis.scripting.xmltags.DynamicContext$ContextAccessor.getProperty(DynamicContext.java:108)
org.apache.ibatis.ognl.OgnlRuntime.getProperty(OgnlRuntime.java:2685)
org.apache.ibatis.ognl.ASTProperty.getValueBody(ASTProperty.java:114)
org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258)
org.apache.ibatis.ognl.ASTNotEq.getValueBody(ASTNotEq.java:50)
org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258)
org.apache.ibatis.ognl.ASTAnd.getValueBody(ASTAnd.java:61)
org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212)
org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:258)
org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:470)
org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:434)
org.apache.ibatis.scripting.xmltags.OgnlCache.getValue(OgnlCache.java:44)
org.apache.ibatis.scripting.xmltags.ExpressionEvaluator.evaluateBoolean(ExpressionEvaluator.java:32)
org.apache.ibatis.scripting.xmltags.IfSqlNode.apply(IfSqlNode.java:34)
org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33)
org.apache.ibatis.scripting.xmltags.TrimSqlNode.apply(TrimSqlNode.java:55)
org.apache.ibatis.scripting.xmltags.MixedSqlNode.apply(MixedSqlNode.java:33)
org.apache.ibatis.scripting.xmltags.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:41)
org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:292)
org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:81)
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
java.base/java.lang.reflect.Method.invoke(Method.java:578)
org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:427)
jdk.proxy3/jdk.proxy3.$Proxy16.selectList(Unknown Source)
org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:224)
org.apache.ibatis.binding.MapperMethod.executeForMany(MapperMethod.java:139)
org.apache.ibatis.binding.MapperMethod.execute(MapperMethod.java:76)
org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:59)
jdk.proxy3/jdk.proxy3.$Proxy19.getComments(Unknown Source)
com.experience.service.impl.Comment_load_service_impl.getComments(Comment_load_service_impl.java:17)
com.experience.controller.Comment_load_Controller.show(Comment_load_Controller.java:24)
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
java.base/java.lang.reflect.Method.invoke(Method.java:578)
org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:150)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:898)
javax.servlet.http.HttpServlet.service(HttpServlet.java:655)
org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
javax.servlet.http.HttpServlet.service(HttpServlet.java:764)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
):注意 主要问题的全部 stack 信息可以在 server logs 里查看