2016-04-03 16 views
0

Ich habe einen RESTful Service. Dies beinhaltet zwei Parameter, ein Startdatum und ein Enddatum.@QueryParam zeigt immer null

Wenn ich @RequestParam Annotation verwende, bekomme ich, was ich brauche. Aber wenn ich @QueryParam benutze, bemerkte ich, dass es immer als Null angezeigt wird, selbst wenn es übergeben wird.

Hier meine Ressource ist:

@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); 

} 

hier Dann ist mein Service:

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

hier Dann ist meine Service-Implementierung:

:

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

} 

Hier mein DAO ist

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

Hier ist meine DAO Implementierung:

@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(); 
    } 
} 

Jede Hilfe wäre sehr dankbar. Wahrscheinlich etwas offensichtlich

+0

und was ist der Dienstendpunkt, den Sie für requestparam und query param aufrufen? – Sanj

+0

Entschuldigung, ich habe den Code eingegeben und das benötigte Bit verpasst :-) Hier ist es: GET/v1/usage/usage-query? Start-date = 2016-01-01; end-date = 2016-03- 01 HTTP/1.1 – Xathras

+0

Es gibt ein kaufmännisches Und zwischen Start- und Enddatum? – Sanj

Antwort

2

Wenn ich @RequestParam Annotation verwende, bekomme ich, was ich brauche. Aber wenn ich @QueryParam verwende, bemerkte ich, dass es immer als Null angezeigt wird, selbst wenn es bestanden wird.

Weil Sie Spring MVC verwenden, die keinerlei Zusammenhang zu JAX-RS hat, die @QueryParam für ist. Frühling unter Verwendung @RequestParam. Wenn Sie Spring verwenden, schlage ich vor, dass Sie Ihre JAX-RS Dependency loswerden, damit Sie nicht verwirrt werden, was Sie verwenden können und was nicht.

+0

Vielen Dank ja, das macht viel Sinn – Xathras