Spring MVC:拒绝匹配映射

时间:2018-01-27 21:14:40

标签: spring spring-mvc

考虑一种情况,我们可以使用相同的正则表达式进行多次映射,这些映射应该以编程方式进行验证(例如针对数据库)。

(这不是一段有效的代码,我只是想解释一下我想要实现的目标。注意url路径中的正则表达式)

// Animal controller
@GetMapping(path = "/{animal-category [a-z-]+}/{animal-name [a-z-]+}")
public void show(@PathVariable String animalCategory, @PathVariable String animalName) {
    // if animalCategory is not found in database, continue with next controller
}

// Plants controller
@GetMapping(path = "/{plant-category [a-z-]+}/{plant-name [a-z-]+}")
public void show(@PathVariable String plantCategory, @PathVariable String plantName) {
    // if plantCateogry is not found in database, continue with next controller - as there is no more, it should return 404
}

1 个答案:

答案 0 :(得分:0)

您可以使用如下常规控制器方法来解决此问题:

// General controller method
@GetMapping(path = "/{category [a-z-]+}/{name [a-z-]+}")
public void show(@PathVariable String category, @PathVariable String name) {

    // look in database for the category

    if(isAnimalCatagory) {

        return showAnimal(category, name);
    } 
    else if(isPlantCategory) }

        return showPlant(category, name);
    }

    return "redirect:/404";
}

public void showAnimal(String animalCategory, String animalName) {
    // for animal categories
}

public void showPlant(String plantCategory, String plantName) {
    // for plant categories
}