В моем весеннем проекте загрузки я хотел сделать перенаправление с http://localhost:8080 на http://localhost:8080/birdspotting. Это код домашнего контроллера:
@RestController
public class HomeController {
@GetMapping("/")
public String showHomePage() {
return "redirect:/birdspotting";
}
}
Результатом перехода на http://localhost:8080 является вывод redirect:/birdspotting.
Вы должны создать другую конечную точку, например:
@GetMapping("/")
public String showHomePage() {
return "redirect:/birdspotting";
}
@GetMapping("/birdspotting")
public String birdspottingPage() {
return "birdspotting";
}
Ожидается, что в ваших шаблонах есть birdspotting.html
.
В основном RestController = Controller + RequestBody
Который отправит ответ json, но мы ожидаем, что преобразователь представления вернет страницу или URL-адрес перенаправления.
Поэтому используйте @Controller вместо @RestController, чтобы решить эту проблему.
Обновлять:
Если вы хотите использовать оба в одном контроллере, используйте @Controller на уровне класса, а затем везде, где вы хотите вернуть ответ на вызов API, поместите @ResponseBody в метод, и везде, где вы хотите вернуть страницу веб-браузера, не ставьте @ResponseBody.
Как я могу поступить, если мне нужно иметь и то, и другое? Я имею в виду ответ в случае вызова API и перенаправление в случае просмотра веб-страниц?
Обновлен ответ ... дайте мне знать для дальнейшего разъяснения.
используйте
@Controller
вместо@RestController
.