我有一个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();
}
}
非常感谢任何帮助。可能是显而易见的事情
答案 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的回答对此作了很好的解释。