Вот метод контроллера, с которого я пытаюсь перенаправить:
@GetMapping("/opensignup/{id}")
public String openSignUp(@PathVariable(value = "id") Long Id) {
Tournament comp = tournamentRepository.findOne(Id);
boolean b = true;
comp.setSignUpOpen(b);
return "redirect:/comp/" + Id;
}
У меня есть другой метод (который является сообщением, если это актуально), который успешно перенаправляет на правильную страницу / контроллер с той же строкой:
return "redirect:/comp/" + Id;
Вместо перенаправления он просто печатает эту ссылку в браузере. (Он печатает его с правильным идентификатором.) Вот так:
перенаправление: / comp / 5
Как мне заставить его перенаправлять вместо печати?
поскольку вы работаете в браузере, вы можете сделать это с помощью JS. просто поймайте ответ и откройте его, как location.href= link, если после этого отправите ответ, если вам нужно
@BennettDams нет, но я только что понял, где я сказал, что это работает, до того, как в классе появилась аннотация @ conntroller, но в этом классе у него была аннотация @ RestController. Может ли это быть причиной?
@Lucia Да, я отправлю ответ как можно скорее.
@BennettDams Оказывается, это вызвал @ RestController, спасибо.
Очень любезно с вашей стороны, что избавил меня от голоса против, великодушный друг. Я не нашел вопросов о переполнении стека с той же проблемой. Я Четверной проверил синтаксис перенаправления "return": / comp / "+ Id;" по сравнению с другими ответами на переполнение стека с аналогичными перенаправлениями, я не видел смысла связывать их, поскольку синтаксис был правильным. Если обращение к ним помогло бы кому-то ответить на мой вопрос, приношу свои извинения.




Это произошло потому, что в верхней части моего метода была аннотация @RestController вместо @Controller. Поскольку мне не нужно, чтобы он успокаивал, я изменил его, и моя проблема решена. Если кто-то хочет пролить свет на то, почему это так и / или как вы бы это сделали, сохраняя аннотацию @RestController (если возможно), тогда не стесняйтесь.
Как указано в комментариях, ваш второй метод аннотирован @RestController. В то время как @Controller предназначен для возврата представлений в контексте Spring, @RestController предназначен для возврата того, что будет записано непосредственно в тело ответа (в большинстве случаев JSON).
@RestController в основном представляет собой комбинацию аннотации @ControllerА ТАКЖЕ и @ResponseBody, при этом вторая будет пытаться сопоставить POJO с JSON.
Дальнейшее чтение:
https://www.genuitec.com/spring-frameworkrestcontroller-vs-controller/
Разница между аннотацией Spring @Controller и @RestController
У вас есть аннотация
@ResponseBodyгде-нибудь во втором вызываемом методе?