我正在春季STS实施SPRING数据JPA + Oracle ...它是postman的示例应用程序我得到了Get方法的响应200但是对于post和put无法从DB读取数据我猜并给出以下错误 - < / p>
无法读取HTTP消息: org.springframework.http.converter.HttpMessageNotReadableException: 无法读取文档:无法识别的令牌'PUT':期待 ('true','false'或'null')在[来源: java.io.PushbackInputStream@1f1076e7; line:1,column:5];嵌套 异常是com.fasterxml.jackson.core.JsonParseException: 无法识别的令牌'PUT':期待('true','false'或'null') 在[来源:java.io.PushbackInputStream@1f1076e7; line:1,column:5]
@Service
public class PersonService {
@Autowired
private PersonRepository personRepository;
public Object findAll() {
return personRepository.findAll();
}
public Person findById(Long id) {
return personRepository.findOne(id);
}
public Person save(Person person) {
return personRepository.save(person);
}
public Person delete(Person person) {
personRepository.delete(person);
return person;
}
public Person findByEmail(String email){ return null; }
}
控制器方法:
@RequestMapping(value = "/all", method = RequestMethod.GET, consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public Hashtable<String, Person> gatAll() {
return personService.getAll();
}
@RequestMapping(value = "/update/{id}", method = RequestMethod.PUT, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public String updateUser(@RequestBody Person person, @PathVariable long id) {
try {
person.setId(id);
personService.save(person);
} catch (Exception ex) {
return "Error in Updating the user : " + ex.toString();
}
return "User successfully Updated";
}
答案 0 :(得分:3)
错误可能是由于您为控制器提供的数据格式造成的。您的控制器方法需要JSON字符串。 例如,在jQuery的情况下,JSON.stringify()为您提供JSON字符串。 因此,我建议您在客户端确认这一点,以便将数据发送到此控制器。
我在处理其中一个项目时遇到过类似的错误。我的客户端是用python编写的,它应该给我发送JSON字符串。所以,我不得不使用dumps()并且它有效。