Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问来自spring控制器的部分映射时出现错误404_Spring_Spring Mvc_Model View Controller_Controller - Fatal编程技术网

访问来自spring控制器的部分映射时出现错误404

访问来自spring控制器的部分映射时出现错误404,spring,spring-mvc,model-view-controller,controller,Spring,Spring Mvc,Model View Controller,Controller,在下面的控制器中,当我尝试访问由方法pagina(…)、produto(…)或categoria(…)映射的url时,我收到一个错误404。但是,如果尝试访问任何一个其他映射,所有映射都不会出现问题。有人能看到我在这里遗漏了什么吗 @Controller public class AcessoController { ... @RequestMapping(value = "/") public String index(Model model) { model.

在下面的控制器中,当我尝试访问由方法
pagina(…)
produto(…)
categoria(…)
映射的url时,我收到一个错误404。但是,如果尝试访问任何一个其他映射,所有映射都不会出现问题。有人能看到我在这里遗漏了什么吗

@Controller
public class AcessoController {
...
    @RequestMapping(value = "/")
    public String index(Model model) {
        model.addAttribute("categorias", lista.categoria());
        model.addAttribute("produtos", lista.produto());
        model.addAttribute("paginas", lista.pagina());
        return "public/index";
    }

    @RequestMapping(value = "/${pagina}")
    public String pagina(Model model, @PathVariable("pagina") String pagina) {
        model.addAttribute("pagina", view.pagina(pagina));
        model.addAttribute("paginas", lista.pagina());
        return "public/pagina";
    }

    @RequestMapping(value = "/produto/${id}")
    public String produto(Model model, @PathVariable("id") String id) {
        model.addAttribute("produto", view.produto(Integer.valueOf(id).intValue()));
        model.addAttribute("paginas", lista.pagina());
        return "public/produto";
    }

    @RequestMapping(value = "/categoria/${nome}")
    public String categoria(Model model, @PathVariable("nome") String nome) {
        model.addAttribute("categoria", view.categoria(nome));
        model.addAttribute("produtos", lista.produto());
        model.addAttribute("paginas", lista.pagina());
        return "public/pagina";
    }

    @RequestMapping(value = "/signin")
    public String signin(Model model) {
        return "acesso/signin";
    }

    @RequestMapping(value = "/signup")
    public String signup(Model model) {
        return "acesso/signup";
    }
...
}

问题在于谁在映射中定义了path变量

将代码更改为:

@RequestMapping(value = "/{pagina}")
public String pagina(Model model, @PathVariable("pagina") String pagina) {
    model.addAttribute("pagina", view.pagina(pagina));
    model.addAttribute("paginas", lista.pagina());
    return "public/pagina";
}

@RequestMapping(value = "/produto/{id}")
public String produto(Model model, @PathVariable("id") String id) {
    model.addAttribute("produto", view.produto(Integer.valueOf(id).intValue()));
    model.addAttribute("paginas", lista.pagina());
    return "public/produto";
}

@RequestMapping(value = "/categoria/{nome}")
public String categoria(Model model, @PathVariable("nome") String nome) {
    model.addAttribute("categoria", view.categoria(nome));
    model.addAttribute("produtos", lista.produto());
    model.addAttribute("paginas", lista.pagina());
    return "public/pagina";
}

注意,我已经在映射中删除了
$
,好了,现在我看到我放了一个不属于那里的
$
:(完全正确!删除它,问题就消失了!