URL карты на контроллер - PullRequest
       24

URL карты на контроллер

0 голосов
/ 10 августа 2009

в моем applicationContext.xml, я положил это

<bean id="something" class="com.to.theController"/>

в com.to.theController

У меня есть этот метод, как

@Controller
public theController{
 @RequestMapping(value="/api/add", method= RequestMethod.GET)
  public String apiAddHandler(Model model){
      model.addAttribute("api", new Api());
      return "apiForm";

  }
}

когда запускается пристань, я вижу определяющие бины [something,...

но когда я перехожу к http://localhost:8080/api/add, я получаю ошибку 404. что я пропустил? я уже отлаживаю метод apiAddHandler, этот метод не вызывается, когда я вызываю URL

Ответы [ 3 ]

1 голос
/ 11 августа 2009

Вам нужно выполнить некоторые настройки.

  1. В вашем файле web.xml вы добавили отображение для DispatcherServlet. Что-то вроде

    <servlet>
        <servlet-name>springapp</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
    <servlet-mapping>
        <servlet-name>springapp</servlet-name>
        <url-pattern>*/api/add</url-pattern>
    </servlet-mapping>
    
  2. Вы должны добавить обработчик аннотации к конфигурации пружины

    <bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping" />
    <context:component-scan base-package="learn.web.controller" />
    

    Где learn.web.controller - это пакет, в котором есть отмеченные компоненты

1 голос
/ 12 августа 2009

Убедитесь, что Spring находит ваши аннотации. Вы должны увидеть что-то вроде «INFO DefaultAnnotationHandlerMapping: 343 - сопоставленный путь URL [/ api / add] на обработчик [com.example.ExampleController@6f3588ca]» в журналах.

Кроме того, как уже упоминалось, вам нужно убедиться, что у вас есть правильное отображение URL в web.xml.

Я бы использовал

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

для отображения всех URL в сервлете диспетчера при использовании аннотаций.

Если вы хотите предоставить какой-либо контент за пределами сервлета-диспетчера, добавьте следующее:

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>*.jpg</url-pattern>
</servlet-mapping>
1 голос
/ 10 августа 2009

Есть ли у вас в элементе web.xml элемент <servlet-mapping> для сопоставления URL, которые выглядят как /api/add с DispatcherServlet?

Если нет, то не имеет значения, как Spring MVC отображает URL-адреса на контроллеры, если запрос никогда не попадает в Spring MVC.

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