所以当你去/约会时调用了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请求,这意味着/ G约会的HTTP GET会调用此方法。 post()有一个类似的细化,getNewForm()将HTTP方法和路径的定义合并为一个,这样就可以通过该方法处理约会/新的GET请求。
答案 0 :(得分:2)
@RequestMapping
- 带注释的方法可以返回各种对象,包括View
,Model
,Map
,String
等等上。这些返回值由ServletHandlerMethodInvoker.getModelAndView()
解释,它根据返回值构造ModelAndView
个对象。
如果返回值未指定视图名称(在您的示例中,除add()
以外的每个方法都不返回视图名称),则Spring将尝试自动解析视图名称。默认情况下,这由DefaultRequestToViewNameTranslator
完成,{{3}}使用有关请求的信息来选择视图名称。 javadoc中的示例是:
http://localhost:8080/gamecast/display.html
- &gt; display
http://localhost:8080/gamecast/displayShoppingCart.html
- &gt; displayShoppingCart
http://localhost:8080/gamecast/admin/index.html
- &gt; admin/index
请注意,所选视图名称不是基于@RequestMapping
方法中的信息,而是基于请求本身的属性。