【发布时间】:2016-04-08 01:04:17
【问题描述】:
我创建了界面:
@RequestMapping("/data")
public interface PersonControllerInterface {
@RequestMapping(value="/person/{id}", method=RequestMethod.GET)
public Person getPersonDetail(@PathVariable final Integer id);
}
以及实现该接口的类:
@RestController
public class PersonController implements PersonControllerInterface {
@Override
public Person getPersonDetail(final Integer id) {
final Person p = new Person(id);
return p;
}
}
但是在我打电话给GET localhost:8080/data/person/4 之后。我得到了:
DEBUG o.s.web.servlet.DispatcherServlet - Could not complete request
java.lang.NullPointerException: null
at com.concretepage.Person.<init>(Person.java:12)
at com.concretepage.PersonController.getPersonDetail(PersonController.java:16)
还有Person 类:
public Person(final Integer id) { this.id = id; }
在 jax-rs 中我可以做类似的事情,但在 Spring 中它无法获取路径中的 id。我的问题有什么解决方案吗?我真的不想在我的实现类中放@PathVariable 注解。
编辑:它不是修复 NPE 的重复。将注解从接口类传播到实现是一个问题。
【问题讨论】:
-
你能包含完整的堆栈跟踪吗?
-
共享 PersonService(第 12 行?)
-
public Person(final Integer id) { this.id = id;这不是构造函数的问题,而是 id 为 null 的问题
-
为什么这个问题与另一个问题重复:这个问题在这里已经有了答案:什么是 NullPointerException,我该如何解决? 12 个答案。最后一个是常见的java问题,但目前与spring-mvc有关
-
不,因为不是NPE的问题,而是接口的注解没有填充到具体类中的问题
标签: java spring inheritance controller