@RequestMapping("/form")
public String form(Model model, Integer id)
例如,spring可以知道参数id的名称是id,并在运行时将请求param的值绑定到它
答案 0 :(得分:2)
这是JDK 8中引入的javac的一个功能。您需要包含-parameters
javac命令行选项来激活它。然后你就可以获得这样的参数名称:
String name = String.class.getMethod("substring", int.class).getParameters()[0].getName()
System.out.println(name);
来自Spring文档3.3 Java 8 (as well as 6 and 7)
您还可以使用Java 8的参数名称发现(基于 -parameters compiler flag)作为在启用调试信息的情况下编译代码的替代方法。
在ParameterNameDiscoverer类的javadoc中指定:
参数名称发现并不总是可行,但各种各样 可以尝试使用策略,例如查找调试信息 可能是在编译时发出的,并且正在寻找argname 注释值可选地伴随AspectJ注释方法。
这是Spring项目Java 8 parameter name discovery for methods and constructors
中相关JIRA项目的链接答案 1 :(得分:1)
WebDataBinder
是谁为你做的。
正如您在api上看到的,WebDataBinder用于从Web请求参数到JavaBean对象的数据绑定。
WebDataBinder还负责验证和转换,这就是为什么如果你有自定义编辑器或验证器,你必须将它们添加到控制器中的webDataBinder,如下所示。
@Controller
public class HelloController {
@InitBinder
protected void initBinder(WebDataBinder binder) {
binder.setValidator(yourValidator);
binder.registerCustomEditor(the clazz to conver to.class, "the name of the parameter", yourEditor);
}
...
有关详细信息,您必须查看文档
http://docs.spring.io/spring/docs/current/spring-framework-reference/html/validation.html