Выполнение перенаправления после POST-запроса весной - PullRequest
0 голосов
/ 26 октября 2019

У меня есть кнопка с этой функцией onClick в JavaScript, которая отправляет запрос на мой сервер Spring с некоторыми данными (я не отправляю никаких данных, потому что до этого пытаюсь решить эту проблему)

async function redirectToModel(model, make){
    const url = 'http://localhost:8080/carmodel';

    const data = {
            make: getCodeName(make),
            model: getCodeName(model)
        };

    const params = {
            mode: "no-cors",
            headers:{
                "Content-Type": "application/json"
            },
            method: "POST"
        }
    await fetch(url, params);
}

Мой контроллер Spring выглядит следующим образом

@Controller
public class NController {
    @GetMapping("/carmodelget")
    public String tester(Model model){
        System.out.println("get request");

        model.addAttribute("name", "test");
        return "carmodel";
    }

    @PostMapping("/carmodel")
    public String aaa(){
        System.out.println("post request");

        return "redirect:/carmodelget";
    }
}

Я пытаюсь перенаправить пользователя со страницы с упомянутой кнопкой на carmodel.html, но я также хочу отправить данные наэтот carmodel.html, потому что это шаблон тимелиев.

Проблема в том, что я получаю как "post request", так и "get request", напечатанные на консоли весной, но перенаправление на самом деле никогда не происходит. Что я делаю не так?

При загрузке Spring возникает ошибка: HttpRequestMethodNotSupportedException: метод запроса «GET» не поддерживается

И консоль браузера выдает ошибку: net :: ERR_ABORTED 405

Ответы [ 2 ]

0 голосов
/ 26 октября 2019

Сделать перенаправление с параметрами довольно просто:

@Controller
public class NController {
    @GetMapping("/carmodelget")
    public String tester(Model model, String param){
        System.out.println("get request");

        model.addAttribute("name", param);
        return "carmodel";
    }

    @PostMapping("/carmodel")
    public String aaa(){
        System.out.println("post request");
        String param = "test";
        return "redirect:" + "/carmodelget?param=" + param;
    }
}

добавить несколько строк в springmvc web.xml

<filter>
    <filter-name>HiddenHttpMethodFilter</filter-name>
    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>  
    <filter-name>HiddenHttpMethodFilter</filter-name>  
    <servlet-name>springmvc</servlet-name>  
</filter-mapping> 
0 голосов
/ 26 октября 2019

Вы не можете перенаправить вызов ajax.

Попробуйте отправить URL перенаправления обратно в ответ на запрос POST

@PostMapping("/carmodel")
public String aaa(){
    System.out.println("post request");

    return "/carmodelget";
    // or as json
    // return "{'url':'/carmodelget'}";

, а затем выполните

window.location.href = newUrl

на стороне клиента.

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