@RequestParam注释

时间:2014-07-22 14:38:22

标签: java spring annotations

我的问题似乎很奇怪,因为我是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
    }

谁将所请求的参数值准确分配给相应的函数参数?

3 个答案:

答案 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.