2010-03-16 2 views
1

/appointments로 이동하면 get() 액션이 호출되므로 뷰는 get.jsp가됩니다 (사용자가 .jsp를 사용하고 있다고 가정하고 매핑 액션 이름을보기로 변경)?스프링의 워드 프로세서에서 볼 수있는 코드

그리고 getnewform은 어떻습니까? 물건을 돌려 준 것 같니? 기본적으로보기로 전달됩니까?

@Controller @RequestMapping("/appointments") public class AppointmentsController { 

private final AppointmentBook appointmentBook; 

@Autowired 
public AppointmentsController(AppointmentBook appointmentBook) { 
    this.appointmentBook = appointmentBook; 
} 

@RequestMapping(method = RequestMethod.GET) 
public Map<String, Appointment> get() { 
    return appointmentBook.getAppointmentsForToday(); 
} 

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

@RequestMapping(value="/new", method = RequestMethod.GET) 
public AppointmentForm getNewForm() { 
    return new AppointmentForm(); 
} 

@RequestMapping(method = RequestMethod.POST) 
public String add(@Valid AppointmentForm appointment, BindingResult result) { 
    if (result.hasErrors()) { 
     return "appointments/new"; 
    } 
    appointmentBook.addAppointment(appointment); 
    return "redirect:/appointments"; 
} } 

예에서 @RequestMapping은 여러 위치에서 사용됩니다. 첫 번째 용도는 유형 (클래스) 수준에 있으며이 컨트롤러의 모든 처리 방법은/약속 경로와 관련이 있음을 나타냅니다. get() 메소드는 @RequestMapping 상세 검색 기능을 제공합니다. 즉, GET 요청 만 허용합니다. 즉,/appointments에 대한 HTTP GET이이 메소드를 호출합니다. post()도 비슷한 세밀 함을 가지고 있으며 getNewForm()은 HTTP 메소드와 path의 정의를 하나로 결합하여 약속/신규에 대한 GET 요청이 해당 메소드에 의해 처리되도록합니다.

답변

2

@RequestMapping -annotated 방법 등등 View하는 Model하는 Map하는 String 등을 비롯한 다양한 개체를 반환 할 수있다. 이러한 반환 값은 해당 반환 값을 기반으로 ModelAndView 개체를 생성하는 ServletHandlerMethodInvoker.getModelAndView()으로 해석됩니다.

리턴 값이 뷰 이름을 지정하지 않은 경우 (예에서 add()이 아닌 모든 메소드는 뷰 이름을 반환하지 않음), 그러면 Spring은 뷰 이름을 자동으로 확인하려고 시도합니다. 기본적으로이 작업은 뷰 이름 선택 요청에 대한 정보를 사용하는 DefaultRequestToViewNameTranslator에 의해 수행됩니다. javadoc에의 예는 다음과 같습니다

  • http://localhost:8080/gamecast/display.html ->display
  • http://localhost:8080/gamecast/displayShoppingCart.html ->displayShoppingCart
  • http://localhost:8080/gamecast/admin/index.html - 선택된 뷰 이름의 정보를 기반으로되지 않는다는>admin/index

@RequestMapping 메쏘드와 같지만 요청 자체의 속성에 의존합니다.

+0

그래서 새로운 AppointmentForm()을 호출하면 뷰가 해석되고 AppointmentForm을 특성/모델로 전달합니다. – Blankman

+0

@Blankman : Correct – skaffman

관련 문제