为什么请求参数或@ModelAtrribute不适用于Generic类?

时间:2016-10-18 07:00:12

标签: java spring-mvc generics httprequest wrapper

@ModelAttribute@RequestParam中的每个变量使用Pojo class@RequestParam使用request.getParameter()(我正确吗?)。

但是从Spring MVC Documentation它确定@ModelAttribute填充请求参数以绑定到参数字段。

  • 但我的问题是如果pojo类是generic类,则无法获取参数, 为什么 < /强>

    • 是因为类型被视为Object,而不是传递参数类型(Pojo)。
    • 变量的请求对象/映射是否无法处理Generics
  • 如果它的Wrapper类比它能正常工作,因为它可以确定param类型(即Pojo类)。

要检查的示例代码:

控制器

@RequestMapping(value = "/generic", method = RequestMethod.GET)
public String generic(@ModelAttribute Generic<ParamClass> generic) {
    return null;
}

@RequestMapping(value = "/wrapper", method = RequestMethod.GET)
public String wrapper(@ModelAttribute WrapperClass wrpr) {  //wrpr contains value
    return null;
}

包装类

public class WrapperClass {
    private ParamClass paramList;
    //getter & setter
}

通用课程

public class Generic<T> {
    private T paramList;
    //getter & setter
}

Pojo Class

public class ParamClass {
    private String param;
    // getter & setter
}

Jsp表格

<form action="/wrapper">
    <table>
        <tr>
            <td><input type="text" name="paramList.param" /></td>
        </tr>
    </table>
    <input type="submit" value="Submit">
</form> 

还有一个问题是,每种类型都需要Wrapper类吗?有没有更好的解决方案(除了在一个类中包含所有param类型变量)?

0 个答案:

没有答案