例如,在此控制器中:
@RequestMapping(value = "/save", method = RequestMethod.POST)
public @ResponseBody String save(
@ModelAttribute("newInstance") MyClass newInstance) { . . . }
是否可以使
@ModelAttribute
带注释的参数动态化?我希望能够将其用于多个对象,无论类型如何。 最佳答案
注释是在编译时定义的常量(这就是为什么注释方法/成员只能使用一组有限的类型的原因)。
但这并不意味着它们不能动态变化,您只需要自己(或另一个库的一部分)一些狡猾的工作即可。
您可以创建一种小的脚本语言,并使用一个表达式作为参数。这样,String
值可能不是动态的,但是您的语言可以对String
中包含的表达式进行处理。
幸运的是,您不必编写自己的小语言,因为Spring已经为您做到了。 Spring Expression Language (SpEL)。我不确定SpEL是否会在这里为您提供帮助,但是值得一看。