Java 有没有办法使@modeldattribute成为动态的?
例如,在此控制器中:Java 有没有办法使@modeldattribute成为动态的?,java,spring,spring-mvc,Java,Spring,Spring Mvc,例如,在此控制器中: @RequestMapping(value = "/save", method = RequestMethod.POST) public @ResponseBody String save( @ModelAttribute("newInstance") MyClass newInstance) { . . . } 是否可以使带注释的参数动态化?我希望能够将其用于多个对象,而不考虑类型 注释是在编译时定义的常量(这就是为什么只有有限的一组类型
@RequestMapping(value = "/save", method = RequestMethod.POST)
public @ResponseBody String save(
@ModelAttribute("newInstance") MyClass newInstance) { . . . }
是否可以使带注释的参数动态化?我希望能够将其用于多个对象,而不考虑类型 注释是在编译时定义的常量(这就是为什么只有有限的一组类型可用于注释方法/成员) 但这并不意味着它们不能是动态的,您只需要在您的部分(或其他库的部分)上进行一些巧妙的工作 您可以创建一种小型脚本语言,并使用表达式作为参数。这样,
String
值可能不是动态的,但是您的语言对String
中包含的表达式所做的操作可能是动态的
幸运的是,您不必编写自己的小型语言,因为Spring已经为您完成了。我不确定SpEL是否会在这里帮助您,但值得一看。您可以通过反射动态实例化模型对象,然后手动触发绑定以获得所需的结果
@RequestMapping(method=RequestMethod.POST,value="/add/{modelSelect}")
public String saveEntity(@PathVariable String modelSelect, WebRequest request){
Object domainObject = //create object with your custom strategy using the modelSelect
WebRequestDataBinder binder = new WebRequestDataBinder(domainObject);
binder.bind(request);
//do something with the domain object
return "/somePage";
}
这也可能是有用的