导致 404 的路径变量

Path Variable Causing 404


我正在添加一个 Path variable 来接收 URL 发送的值。这是我的控制器。

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping(value = "/list/{field}", method = RequestMethod.GET)
    public void userList(Model model, @PathVariable("field") String field) {
        List<Users> userList = userDAO.searchAll();
        System.out.println("Condition "+field);
        model.addAttribute("userList", userList);
    }

}

但是我遇到了 404 错误。

这是我 jsp 的文件夹结构。

请帮我看看这里出了什么问题。
谢谢。


编辑: 我是否有机会发送空路径变量 ex:http://localhost:8080/mvcquick/user/list 和 return 到相同的方法?

请尝试以下选项。

@PathVariable(name="field",required=true)

我认为它正在您的“.jsp”文件中寻找 n.jsp。请确保在发送 id 或 attributes 时您发送正确。

请注意错误提示 n.jsp 未找到。这意味着您没有 return 从控制器获取视图名称 - 我假设它是 list.jsp。要更改此设置,请提供指向您的 list.jsp 文件的 return String 值。所以尝试使用

    @RequestMapping(value = "/list/{field}", method = RequestMethod.GET)
    public String userList(Model model, @PathVariable("field") String field) {
        List<Users> userList = userDAO.searchAll();
        System.out.println("Condition "+field);
        model.addAttribute("userList", userList);
        return "jsp/user/list.jsp"; // Path root must be from WEB-INF
    }

系统正在寻找 mvcquick/WEB-INF/jsp/user/list/n.jsp。 我没有看到这个文件。

请试试这个:

@Controller
@RequestMapping("/user")
public class UserController {

    @RequestMapping(value = "/list/{field}", method = RequestMethod.GET)
    public String userList(Model model, @PathVariable("field") String field) {
        List<Users> userList = userDAO.searchAll();
        System.out.println("Condition "+field);
        model.addAttribute("userList", userList);
        return "user/list"; // added line. Alos return type to String
    }