如何结合GET&在Spring Web应用程序中为同一视图发布POST HTTP方法?

时间:2018-02-14 14:43:59

标签: java spring spring-mvc annotations

我有一个使用此方法呈现的视图:

@RequestMapping("/employee/{id}")
public String showSpecificEmployee(@PathVariable String id, Model model){

    model.addAttribute("employee", employeeService.findEmployeeById(new Long(id)));

    DateCommand dateCommand = new DateCommand();
    dateCommand.setEmployeeId(new Long(id));

    model.addAttribute("date", dateCommand);

    return "specificEmployee";
}

该视图显示有关Employee的一些基本信息。在同一视图中,我有一个表单来选择月份并按Date过滤信息。 选择Date后,我希望使用更新的信息“刷新”视图。这意味着我确实有一个POST& GET方法绑定到同一视图。

@RequestMapping("/passdate")
public String updateWorkmonth(@ModelAttribute DateCommand dateCommand, Model model){

    model.addAttribute("employee", employeeService.findEmployeeWithFilteredWorkdaysAndPayments(dateCommand.getEmployeeId(), dateCommand.getActualDate()));
    model.addAttribute("date", dateCommand);

    return "specificEmployee";
}

调用第二个方法后看起来像 http://localhost:8080/passdate?employeeId=1&actualDate=2018-02,但我希望它是/employee/{id}。如何组合这两种方法,以便它们指向相同的URL?

如果我在两种方法上设置@RequestMapping("/employee/{id}"),我会一直收到错误。

3 个答案:

答案 0 :(得分:1)

您实际上只需要一个 GET方法

@RequestMapping(value = "/employee/{id}",method = RequestMethod.POST)

并可选择传递

@RequestMapping("/employee/{id}")

答案 1 :(得分:0)

您可以在<script src="https://cdn.jsdelivr.net/npm/vue@2.5.13/dist/vue.js"></script> <div id="sample"> <div v-for="n in numbers"> {{n}} <div v-for="l in getLeadingNbs(n)"> ....{{l}} </div> <br> </div> </div>参数

中指定所需的HTTP请求类型

如果您未指定,则默认使用@RequestMapping

GET

答案 2 :(得分:0)

您可以将用户重定向到该网址。只需在方法updateWorkmonth中替换一行

return "specificEmployee";

return "redirect:/employee/" + dateCommand.getEmployeeId();