我的问题似乎很奇怪,因为我是Java的新手。
我在Java
中阅读了有关注释的oracle lesson。但我还没有理解他们如何在实践中发挥作用。请考虑以下spring framework 4.0.1
定义的注释:
@Target(value = {ElementType.PARAMETER})
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
public @interface RequestParam {
public String value() default "";
public boolean required() default true;
public String defaultValue() default "\n\t\t\n\t\t\n\ue000\ue001\ue002\n\t\t\t\t\n";
}
注释可以应用于函数参数,如下所示
public void change(@RequestParam("id") String id, @RequestParam("cost") String cost, @RequestParam("name") String name, Model model) throws SQLException, UnsupportedEncodingException {
//id will have the value of param id, passing inside request
//but ***I have no explicitly assignation*** requested parameter
//to the function parameter
}
谁将所请求的参数值准确分配给相应的函数参数?
答案 0 :(得分:1)
您正在使用的Spring版本中的默认(@EnabledWebMvc
或<mvc:annotation-driven />
)MVC堆栈使用HandlerMethodArgumentResolver
的实现来解析在调用处理程序方法时使用的参数(使用{注释的方法) {1}})。
对于@RequestMapping
,该实施是RequestParamMethodArgumentResolver
。
所有参数都被收集,然后Spring使用反射来调用你的处理程序方法。它在调用期间传递收集的参数。
答案 1 :(得分:0)
默认 @EnabledWebMvc 或&lt; mvc:annotation-driven /&gt; 您正在使用的Spring版本中的MVC堆栈使用HandlerMethodArgumentResolver
的实现来解析在调用处理程序方法时使用的参数(使用@RequestMapping
注释的方法)。
对于@RequestParam
,该实施是RequestParamMethodArgumentResolver
。
所有参数都被收集,然后Spring使用反射来调用你的处理程序方法。它在调用期间传递收集的参数。
答案 2 :(得分:-1)
在Spring MVC中你必须申请;
1- index.jsp in WEB-INF
2- property names for index.jsp in view.xml
3- Controller for property names
4- mapping for controller in servlet.xml
如果你想在你需要的项目中使用@RequestParam;
-Form action in jsp
-Class for variables
-Controller for form variables.