@QueryParam始终显示null

时间:2016-04-03 23:52:51

标签: java spring rest

我有一个RESTful服务。这将两个参数作为开始日期和结束日期。

如果我使用@RequestParam注释,我会得到我需要的东西。但是如果我使用@QueryParam,我注意到即使传递它也总是显示为null。

这是我的资源:

@RequestMapping(value = "/usage-query", method = RequestMethod.GET)
@ApiOperation(value = "Available Sessions - JSON Body", notes = "GET method for unique users")
public List<DTO> getUsageByDate(@QueryParam("start-date") final String startDate,
        @QueryParam("end-date") String endDate)
         throws BadParameterException {
    return aaaService.findUsageByDate2(startDate, endDate);

}

然后这是我的服务:

    List<DTO> findUsageByDate(String startDate, String endDate) throws BadParameterException;

然后这是我的服务实现:

public List<DTO> findUsageByDate(String startDate, String endDate) throws BadParameterException {
    return aaaDao.getUsageByDate(startDate, endDate);

}

这是我的DAO:

    List<DTO> getUsageByDate(String startDate, String endDate) throws BadParameterException;

这是我的DAO实施:

@Override
public List<DTO> getUsageByDate(String startDate, String endDate) throws BadParameterException {
    StringBuilder sql = new StringBuilder(
            "select * from usage where process_time >= :start_date");

    if(endDate!= null)
    {
        sql.append(" and process_time < :end_date");
    }


    sql.append(" limit 10");
    System.out.println(sql.toString());
    SqlParameterSource namedParameters = new MapSqlParameterSource().addValue("start_date", startDate)
            .addValue("end_date", endDate);
    try {
        return jdbcTemplate.query(sql.toString(), namedParameters,
                new BeanPropertyRowMapper<DTO>(AAAUsageDTO.class));

    } catch (EmptyResultDataAccessException e) {
        throw new BadParameterException();
    }
}

非常感谢任何帮助。可能是显而易见的事情

2 个答案:

答案 0 :(得分:3)

  

如果我使用@RequestParam注释,我会得到我需要的东西。但是,如果我使用@QueryParam,我注意到即使传递它也始终显示为空。

因为您使用的是Spring MVC,它与@QueryParam用于此目的。 Spring使用@RequestParam。如果你打算使用Spring,我建议你摆脱你的JAX-RS依赖,所以你不要对你能做什么和不能用什么感到困惑。

答案 1 :(得分:0)

Dim params() As Object = New Object() {configuration, orderSaverService} Dim assembly As Assembly = Assembly.LoadFrom(AppDomain.CurrentDomain.BaseDirectory + "\\<dll name here>.dll") Dim myType As Type = assembly.GetType("<dll name + namespace here>", True) objOrder = System.Activator.CreateInstance(myType, params) appDomainOrder = AppDomain.CreateDomain() iexecute = DirectCast(objOrder, IExecute) 替换为@QueryParam("end-date")。这将起作用。但是,我建议您使用@QueryParam("endDate")中的@RequestParam,Paul Samsotha的回答对此作了很好的解释。