spring 接口作为@ModelAttribute 参数

Bla*_*tto 5 implementation spring default interface modelattribute

我有带方法的 UsersController:

@RequestMapping(value={"/new"}, method=RequestMethod.GET)
public String showCreationForm(@ModelAttribute User user){
    return "user_registration_form";
}
Run Code Online (Sandbox Code Playgroud)

显示注册表单。我想在我的项目中保持模块化(在其他项目中使用这个控制器会很好),所以 User 是一个接口,并且有它的实现 - UserImpl。问题是 Spring 无法实例化用户界面。有没有办法配置 spring 以使用用户的一些默认实现?

axt*_*avt 4

您可以使用 -annotated 方法提供一个要填充请求数据的对象@ModelAttribute

@ModelAttribute
public User createUser() {
    return new UserImpl();
}
Run Code Online (Sandbox Code Playgroud)

  • 我刚刚意识到我之前的评论中的解决方案很糟糕。我将失去通过 @Valid 注释验证用户的能力。 (2认同)