Spring MVC: проблема URL запроса с отображением муравья - PullRequest
0 голосов
/ 29 мая 2018

Spring MVC: проблема URL-адреса RequestMapping в стиле ant

Это мой код:

@Controller
@RequestMapping("/*emp*")   // Ant Style
public class EmployeeController {

    @Autowired
    EmployeeService service;

    @RequestMapping("/add")
    public ModelAndView employee() {
        ModelAndView modelAndView = new ModelAndView("emp/add", "command", new Employee());
        return modelAndView;
    }

    @RequestMapping("/employees")
    public ModelAndView getEmployeeList() {
        ModelAndView modelAndView = new ModelAndView("/emp/employees", "list", service.getEmployeeList());
        return modelAndView;
    }

    @RequestMapping(value = "/create")
    public String createEmployee(@ModelAttribute Employee employee, ModelMap model) {
        service.newEmployee(employee);
        model.addAttribute("name", employee.getName());
        model.addAttribute("age", employee.getAge());
        model.addAttribute("id", employee.getId());
        return "/emp/create";
    }
}

Когда я запускаю свой сервер Tomcat, в разделе «Консоль» отображаются следующие строки, связанные сОтображение URL:

May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/*emp*/add] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/*emp*/add.*] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/*emp*/add/] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/employees] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/employees.*] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/employees/] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/*emp*/employees/] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/*emp*/create] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/*emp*/create.*] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/*emp*/create/] onto handler 'employeeController'

Я могу успешно выполнить следующий URL:

http://localhost:8080/Spring/emp/add
http://localhost:8080/Spring/emp/create

Но при попытке выполнить следующий URL я обнаружил страницу 404:

http://localhost:8080/Spring/emp/employees

Но та же страница успешно выполняется с использованием следующего URL:

http://localhost:8080/Spring/employees

Почему это изменение поведения только для одного конкретного URL? Как выполнить следующееURL успешно с той же реализацией:

http://localhost:8080/Spring/emp/employees

1 Ответ

0 голосов
/ 29 мая 2018

Это потому, что emp присутствует и в сотрудниках.Таким образом, ваш запрос сопоставляется с RequestMapping класса.

Измените свой код на следующий -

                @Controller
                @RequestMapping("/*emp*/")   // Ant Style
                public class EmployeeController {

               @Autowired
               EmployeeService service;

              @RequestMapping("add")
              public ModelAndView employee() {
              ModelAndView modelAndView = new ModelAndView("emp/add", "command", new Employee());
              return modelAndView;
             }

             @RequestMapping("employees")
             public ModelAndView getEmployeeList() {
             ModelAndView modelAndView = new ModelAndView("/emp/employees", "list", service.getEmployeeList());
             return modelAndView;
           }

           @RequestMapping(value = "create")
           public String createEmployee(@ModelAttribute Employee employee, ModelMap model) {
           service.newEmployee(employee);
           model.addAttribute("name", employee.getName());
           model.addAttribute("age", employee.getAge());
          model.addAttribute("id", employee.getId());
          return "/emp/create";
           }
     }

Это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...