Spring MVC RequestParam长类型绑定始终为空

时间:2015-09-04 08:05:13

标签: java spring spring-mvc

在我的其中一个动作中,我将Long(非原始)类型绑定到请求参数。

@RequestMapping("/history")
    public ModelAndView historyList_GET(
            @RequestParam(value="startDate",required=false) Long startDate,
            @RequestParam(value="endDate",required=false) Long endDate
            )
    {
    }

但这些变量的值始终为null。所以我检查了文档,搜索了类似的问题,但我什么也没找到。

当然,我可以将绑定类型更改为String,然后将其转换为Long,但在我看来这不是一个好的解决方案。这只是一种解决方法......

我看到人们使用包装器对象将其与@ModelAttribute注释绑定的另一种方式。如;

public class Wrapper
{
 public Long startDate;
 public Long endDate;
}

@RequestMapping("/history")
    public ModelAndView historyList_GET(
            @ModelAttribute Wrapper dates
            )
{
}

但是这也是一种解决方法。

我在问这怎么可能?为什么即使所有其他引用类型都完美绑定,Long不会?是因为我错过了什么吗?

顺便提一下这些是......

/history?endDate=144656539476
/history?startDate=144656539476
/history?startDate=144656539476&endDate=14499999999

1 个答案:

答案 0 :(得分:0)

您的包装器类缺少setter方法。

适用于我的包装类的实际代码: -

public class Wrapper {
    public Long startDate;
    public Long endDate;

    public Long getStartDate() {
        return startDate;
    }

    public void setStartDate(Long startDate) {
        this.startDate = startDate;
    }

    public Long getEndDate() {
        return endDate;
    }

    public void setEndDate(Long endDate) {
        this.endDate = endDate;
    }

}