【问题标题】:Multiple @GetMapping servlets with same path?具有相同路径的多个@GetMapping servlet?
【发布时间】:2017-08-09 13:47:35
【问题描述】:

我想为/persons 路径创建多个servlet。没有任何查询参数的路径应该只服务于 html 页面(使用Thymeleaf 模板)。

带参数的应该用数据填充 http 模型。

@Controller
@RequestMapping("/persons")
public class PricingCacheController {

    //default just routing to the html template
    @GetMapping(params = "")
    public String personsHtml() {
        System.out.println("initial page load");
        return "persons";
    }

    @GetMapping
    public String personsGet(Model model, @RequestParam MyBean bean) {
        System.out.println("get request");
        model.addAttribute("dto", dao.findAll());
        return "persons";
    }

执行localhost:8080/persons 时,我得到一个404 not found。

【问题讨论】:

  • 如果您参考Spring Documentation 获取请求映射类型,可能会容易得多。可以使用@PathVariable和@RequestMethod注解来区分HTTP方法

标签: java spring spring-mvc servlets thymeleaf


【解决方案1】:

您不能这样做,servlet 映射是在 url 级别完成的,并且在解析 url 时会忽略查询参数,因此由于您必须映射相同的路径(不管查询参数),您将得到 404,为什么不使用路径变量?

【讨论】:

    猜你喜欢
    • 2020-10-12
    • 1970-01-01
    • 2023-02-12
    • 2020-12-15
    • 2021-09-02
    • 1970-01-01
    • 2022-01-21
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多