Причинная переменная пути 404 - PullRequest
0 голосов
/ 04 января 2019

Я добавляю 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.browser screenshot

И это моя структура папок для jsp.JSP folder structure

Пожалуйста, помогите мне узнать, что здесь не так.Спасибо.

Редактировать: И есть ли шанс, что я могу отправить пустую переменную пути, например: http://localhost:8080/mvcquick/user/list и вернуться к тому же методу?

Ответы [ 4 ]

0 голосов
/ 04 января 2019

система ищет 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
    }
0 голосов
/ 04 января 2019

Я думаю, что он ищет n.jsp внутри ваших файлов .jsp.Пожалуйста, убедитесь, что при отправке id или атрибутов вы отправляете правильно.

См. Эту ссылку для отправки данных (SO)

0 голосов
/ 04 января 2019

Обратите внимание, что ошибка говорит, что n.jsp не найден.Это означает, что вы не возвращаете имя представления из контроллера - я предполагаю, что это list.jsp.Чтобы изменить это, укажите возвращаемое значение String, указывающее на ваш файл list.jsp.Поэтому попробуйте использовать

    @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
    }
0 голосов
/ 04 января 2019

Пожалуйста, попробуйте с опцией ниже.

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