例如,在此控制器中:

@RequestMapping(value = "/save", method = RequestMethod.POST)
    public @ResponseBody String save(
            @ModelAttribute("newInstance") MyClass newInstance) { . . . }

是否可以使@ModelAttribute带注释的参数动态化?我希望能够将其用于多个对象,无论类型如何。

最佳答案

注释是在编译时定义的常量(这就是为什么注释方法/成员只能使用一组有限的类型的原因)。

但这并不意味着它们不能动态变化,您只需要自己(或另一个库的一部分)一些狡猾的工作即可。

您可以创建一种小的脚本语言,并使用一个表达式作为参数。这样,String值可能不是动态的,但是您的语言可以对String中包含的表达式进行处理。

幸运的是,您不必编写自己的小语言,因为Spring已经为您做到了。 Spring Expression Language (SpEL)。我不确定SpEL是否会在这里为您提供帮助,但是值得一看。

07-28 03:30
查看更多