Какой вид будет решен, код из документов Spring - PullRequest
1 голос
/ 17 марта 2010

Итак, когда вы переходите к / назначению, вызывается действие 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, что означает, что HTTP GET для / назначений вызывает этот метод. Функция post () имеет аналогичное уточнение, а getNewForm () объединяет определение метода и пути HTTP в одно, так что запросы GET для назначений / новых обрабатываются этим методом.

1 Ответ

2 голосов
/ 17 марта 2010
Методы, помеченные

@RequestMapping, могут возвращать широкий спектр объектов, включая View, Model, Map, String и т. Д. Эти возвращаемые значения интерпретируются как ServletHandlerMethodInvoker.getModelAndView(), что создает ModelAndView объекты на основе этого возвращаемого значения.

В случаях, когда возвращаемое значение не указывает имя представления (в вашем примере каждый метод, кроме 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, а на свойствах самого запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...