2016-03-16 2 views
0

предположим, я следующий простой остальные определены:Как программно прочитать путь службы отдыха?

@RequestMapping("/user/data") 
@ResponseBody 
public String getUserDetails(@RequestParam int id) { 
    ... 
} 

Есть ли способ, чтобы прочитать строку пути проблемно другой части кода (т.е. от другого метода в целом)? Что-то вроде:

String restPath = SomeReflection.getPath("getuserdetails"); // received value: "/user/data" 

WDYT? спасибо!

Решенный! вот реализация мне нужна:

public String getUrlFromRestMethod(Class controllerClass, String methodName) { 

     try { 
      Method method = controllerClass.getMethod(methodName); 
      if (method != null && method.isAnnotationPresent(RequestMapping.class)) { 

       RequestMapping requestMappingAnnotation = method.getAnnotation(RequestMapping.class); 
       return requestMappingAnnotation.toString(); 
      } 
     } catch (NoSuchMethodException e) { 
      e.printStackTrace();//TODO 
     } 

     return null; 
    } 

ответ

2

Если вы имеете в виду, что вы хотите доступа к этому значению программно даже из другого класса, то, возможно, вы можете приступить к разработке вашего решения из этого примера:

//get all methods defined in ClassA 
    Method[] methods = ClassA.class.getMethods(); 
    for (Method m : methods) { 
     //pick only the ones annotated with "@RequestMapping" 
     if (m.isAnnotationPresent(RequestMapping.class)) { 
      RequestMapping ta = m.getAnnotation(RequestMapping.class); 
      System.out.println(ta.value()[0].toString()); 
     } 
    } 
+0

вот что мне нужно !!! благодаря! – shemerk

0

Я хотел бы предложить вам добавить запрос HttpServletRequest в методе, а затем оттуда идут request.getServletPath()

е

public String getUserDetails(HttpServletRequest request, @RequestParam int id) { 

Or если это делается весной http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-ann-requestmapping

@RequestMapping(path = "/{day}", method = RequestMethod.GET) 
public Map<String, Appointment> getForDay(@PathVariable @DateTimeFormat(iso=ISO.DATE) Date day, Model model) { 
    return appointmentBook.getAppointmentsForDay(day); 
} 
+0

Я должен был указан - я ищу по достижении путь от внешнего класса \ метод – shemerk

0
@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET) 
public String findOwner(@PathVariable String ownerId, Model model) { 
    Owner owner = ownerService.findOwner(ownerId);  
    model.addAttribute("owner", owner);  
    return "displayOwner"; 
} 

Возможно, вы можете назвать его значение.

Смежные вопросы