将项目从Spring Boot部署到tomcat,发布形式出错

时间:2019-03-08 09:09:11

标签: spring forms spring-boot spring-mvc tomcat

到目前为止,我已经安装了Spring Boot来执行手动执行。通过Tomcat时,我在以帖子的形式运行时遇到了问题,这是我以前没有的。我注意到该网址显示不正确,导致应用程序名称丢失。

@RequestMapping(value = "/registrazioneNuovoRuolo", method = RequestMethod.GET)
    public String showFormRegistrazioneRuolo(WebRequest request, Model model) {
        RuoloDto RuoloDto = new RuoloDto();
        model.addAttribute("ruolo", RuoloDto);
        model.addAttribute("visite", visitaRepository.findAll());
        return "registrazioneRuolo";
    }

    //Derivante dall'invio della form , effettuo la creazione del ruolo legando i dati acquisiti
    @RequestMapping(value = "/registrazioneNuovoRuolo", method = RequestMethod.POST)
    public ModelAndView registerNuovoRuolo(@Valid RuoloDto ruoloDto, 
            BindingResult result, WebRequest request, Errors errors , Model model) { 

        Ruolo ruolo = new Ruolo();
        if (!result.hasErrors()) {
            ruolo.setNome(ruoloDto.getNome().toUpperCase());
            if(ruoloDto.getIdVisite()!=null)
                ruolo.setVisite(visitaRepository.findAllById(ruoloDto.getIdVisite()));
            ruoloRepository.save(ruolo);
            return new ModelAndView("redirect:/homepageVIME","successInserimentoRuolo",true);
        }
        return new ModelAndView("redirect:/registrazioneNuovoRuolo","success",false);
    }

我正确显示了表单,一旦确认进入表单的post方法,URL就不正确。我给你看一个例子: http://localhost:8081/nameapp/registrazioneNuovoRuolo,当我确认时是正确的 http://localhost:8081/registrationNuovoRuolo由于缺少nameapp而返回404

3 个答案:

答案 0 :(得分:1)

在这里,您使用两个不同的方法使用相同的端点(@RequestMapping(value = "/registrazioneNuovoRuolo" ),这可能会导致问题。当您通过网络浏览器发送请求时,它就是GET请求。要发出POST请求,如果尚未使用POST方法创建表单,则应使用Postman和类似工具。 Tomcat也没有问题

如果您没有任何类级别的“请求映射”,则会显示以下内容。

  

http://localhost:8081/registrationNuovoRuolo

答案 1 :(得分:1)

请确保在进行如下所示的表单操作之前先加斜杠,以使spring会自动在上下文路径(nameapp)之前添加。

action="/registrazioneNuovoRuolo"

如果上面的方法不起作用,则可以像下面这样在上下文路径之前添加

"${#request.contextPath}/registrazioneNuovoRuolo" (thymeleaf)


action="${pageContext.request.contextPath}/registrazioneNuovoRuolo" (JSP)

答案 2 :(得分:0)

我已经用不同的方式解决了:在控制器上添加WebRequest和属性model.addAttribute(“ contextPath”,request.getContextPath());所以我改变了这个动作。非常感谢;)