【问题标题】:Path Variable Causing 404路径变量导致 404
【发布时间】:2019-05-30 16:15:37
【问题描述】:


我正在添加一个 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 并返回相同的方法?

【问题讨论】:

标签: java path-variables


【解决方案1】:

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

See this link for sending data(SO)

【解决方案2】:

系统正在寻找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
    }

【讨论】:

  • 是的,我明白了。我想知道如何将n只设置为参数?
  • 修改后的代码中提到: - 将返回类型更改为字符串 - 返回jsp的路径
【解决方案3】:

请注意错误提示未找到 n.jsp。这意味着您没有从控制器返回视图名称 - 我假设它是 list.jsp。要更改这一点,请给出指向您的 list.jsp 文件的 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
    }

【讨论】:

    【解决方案4】:

    请尝试以下选项。

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

    【讨论】:

    • 如果我尝试了 ` public void userList(Model model, @PathVariable(name="field")) { ` 那么我得到一个illigal start of type 编译错误。
    • 什么是“字段”类型?
    • 它应该是我在问题中提到的字符串
    • 我想转换“字段”的类型有问题。如果它是字符串,那么它会自动通过 [@PathVariable(name="field",required=true) String field] 转换为字符串但是如果它是不同的类型,那么就输入那个类型。
    • 那我该怎么办
    猜你喜欢
    • 1970-01-01
    • 2014-11-30
    • 2013-09-12
    • 2015-04-07
    • 2014-07-12
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    相关资源
    最近更新 更多