通常,弹簧控制器方法具有以下观点:
@RequestMapping("/url")
public String getUrl([params]){
// do some stuff..
}
as params可以接受来自请求的get/post/delete
.. params或model
,locale
等一些标准化的参数。
接下来我的问题是:当调用方法时,可以接受我的参数。像:
@RequestMapping("/profile")
public String getUserProfile(UserEntity user, [params ..]){
// do some stuff..
}
此处UserEntity user
不是请求正文,而是来自我的数据库的实体。
场景是下一个:在执行方法getUserProfile
之前,spring执行一些其他方法,以某种方式从DB获取用户并将其作为方法参数传递。
在现实生活中有没有办法重复这种情况?
答案 0 :(得分:1)
如果您使用Spring Data,则可以这样做。请参阅文档:http://docs.spring.io/spring-data/commons/docs/current/reference/html/#core.web
基本上,您需要做的是将id添加为参数,然后Spring Data将使用该ID从数据库中获取实体并将其传递给方法:
@RequestMapping("/{id}")
public String showUserForm(@PathVariable("id") User user) {}
要启用该功能,您必须将注释@EnableSpringDataWebSupport
放到@Configuration
类
答案 1 :(得分:0)
检查here。
我们可以使用MVC拦截器。您需要修改Interceptor实现。检查请求URL模式,如果匹配,则调用返回UserProfile对象的方法。希望这会有所帮助。