gpt4 book ai didi

java - 将解析哪个 View ,来自 spring 文档的代码

转载 作者:行者123 更新时间:2023-11-30 05:13:33 26 4
gpt4 key购买 nike

因此,当您转到/appointments 时,将调用 get() 操作,那么 View 将是 get.jsp (假设您正在使用 .jsp,并假设您将操作名称映射到 View )?

那么 getnewform 又如何呢?好像是返回一个对象?这基本上传递到 View 中了吗?

@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 在多个地方使用。第一个用法是在类型(类)级别上,这表明该 Controller 上的所有处理方法都相对于/appointments 路径。 get() 方法有一个进一步的 @RequestMapping 改进:它只接受 GET 请求,这意味着/appointments 的 HTTP GET 会调用此方法。 post() 也有类似的改进,而 getNewForm() 将 HTTP 方法和路径的定义合二为一,以便通过该方法处理约会/new 的 GET 请求。

最佳答案

@RequestMapping 注解的方法可以返回各种对象,包括 ViewModelMapString 等等。这些返回值由 ServletHandlerMethodInvoker.getModelAndView() 解释,它根据该返回值构造一个 ModelAndView 对象。

如果返回值未指定 View 名称(在您的示例中,除 add() 之外的每个方法均不返回 View 名称),则 Spring 将尝试自动解析 View 名称。默认情况下,这是由 DefaultRequestToViewNameTranslator 完成的,它使用有关请求的信息来选择 View 名称。 javadoc 中的示例是:

  • http://localhost:8080/gamecast/display.html -> 显示
  • http://localhost:8080/gamecast/displayShoppingCart.html -> displayShoppingCart
  • http://localhost:8080/gamecast/admin/index.html -> admin/index

请注意,所选 View 名称不是基于 @RequestMapping 方法中的信息,而是基于请求本身的属性。

关于java - 将解析哪个 View ,来自 spring 文档的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2458274/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com