
Spring MVC 模型类绑定
coding十二月 06, 20161mins
Spring MVC Spring Data
在使用Spring MVC的时候有一个很普通的需求,根据url中传递的id参数,查询并绑定绑定到一个实体对象
bash
@Controller@RequestMapping("/users")public class UserController {private final UserRepository userRepository;@Autowiredpublic UserController(UserRepository userRepository) {Assert.notNull(repository, "Repository must not be null!");this.userRepository = userRepository;}@RequestMapping("/{id}")public String showUserForm(@PathVariable("id") Long id, Model model) {// Do null check for idUser user = userRepository.findOne(id);// Do null check for usermodel.addAttribute("user", user);return "user";}}
Spring Data提供的DomainClassPropertyEditorRegistrar能够自动地查找所有注册的Spring Data repositories,并使用它进行查询转换
bash
<bean class="….web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="webBindingInitializer"><bean class="….web.bind.support.ConfigurableWebBindingInitializer"><property name="propertyEditorRegistrars"><bean class="org.springframework.data.repository.support.DomainClassPropertyEditorRegistrar" /></property></bean></property></bean>
上面的代码即可简化为
bash
@Controller@RequestMapping("/users")public class UserController {@RequestMapping("/{id}")public String showUserForm(@PathVariable("id") User user, Model model) {model.addAttribute("user", user);return "userForm";}}
同时使用了PropertyEditors转换后,还能够继续对User对象填充页面的提交的值,这在JPA更新的场合极为方便,省去了手动Merge的过程。
评论
新的评论
上一篇
Spring circular dependency
当发生类似 Bean#1 -> Bean#2 -> Bean#1 的依赖时,Spring框架通常能够自动的进行处理 You can generally trust Spring to do the right thing. It detects configuration …
下一篇
Docker compose使用默认的bridge网络
首先compose默认会为当前的compose建立单独的网络,然后所有的服务连接到这个网络。如果需要定义默认连接到自定义的网络,需要这样定义 如果是自定义的外部网络 如果外部网络使用的是docker默认的 bridge 网络,会报如下错误 Network-scoped alia…
