Конфликт сопоставления уровня класса в контроллере Spring

Я только начал изучать весеннюю загрузку, пожалуйста, развейте мои сомнения

Предположим, есть два контроллера.

@Controller
@RequestMapping("A")
public class A{
               @RequestMapping("hi")
               public String gethi(){
                      return "Hi";
               }
}

и еще один контроллер

@Controller
@RequestMapping("B")
public class B{
               @RequestMapping("hello")
               public String gethello(){
                      return "Hello";
               }
}

Предположим, что пользователь находится на индексной странице и щелкает ссылку, которая выглядит следующим образом.

<a href="A/hi">click</a>

Он указал, что контроллер A получит этот запрос и ответит на него соответствующим образом. URL-адрес будет выглядеть примерно так: www.abc.com/A/hi

Но если пользователь хочет отправить запрос методу контроллера B, предположим, что теперь он нажимает на ссылку, которая выглядит следующим образом:

<a href="B/hello">click</a>

Теперь пользователь получит сообщение об ошибке. и URL становится: www.abc.com/A/B/hello.

Но если добавить * в сопоставление запросов на уровне класса, например:

@Controller
@RequestMapping("*/B")
public class B{

тогда этот метод будет выполнен. Но все же этот URL-адрес www.abc.com/A/B/hello выглядит не очень хорошо.


person Navneet Singh    schedule 13.05.2020    source источник


Ответы (1)


<a href="A/hi">click</a>

После нажатия на ссылку выше вернитесь к индексу www.abc.com

Теперь, когда вы нажмете <a href="B/hello">click</a>, он будет работать нормально.

Это происходит потому, что вы не используете механизм маршрутизации навигации в пользовательском интерфейсе.

person Shane aalam    schedule 13.05.2020