2010-11-29 3 views
2
информация

Error: отображение не найдено для запроса HTTP с URI [/TestSpringWebApp/hello.htm]Spring MVC 3 Нет отображения найдено для запроса HTTP с URI

Любая помощь будет принята с благодарностью!

Я использую аннотацию для запроса карты на контроллер. Код контроллер:

@Controller 
@RequestMapping("/hello.htm") 
public class HelloController {  
    protected final Log logger = LogFactory.getLog(getClass()); 

    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response)  
      throws ServletException, IOException { 
     String now = (new Date()).toString(); 

     logger.info("Returning hello view with " + now); 

     return new ModelAndView("hello", "now", now);  
    }  
} 

грузоотправитель-servlet.xml следующим образом:

<?xml version="1.0" encoding="UTF-8"?> 
<beans ...> 

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/> 

    <!-- 
    Most controllers will use the ControllerClassNameHandlerMapping above, but 
    for the index controller we are using ParameterizableViewController, so we must 
    define an explicit mapping for it. 
    --> 
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> 
     <property name="mappings"> 
      <props> 
       <prop key="index.htm">indexController</prop> 
      </props> 
     </property> 
    </bean> 

    <bean id="viewResolver" 
      class="org.springframework.web.servlet.view.InternalResourceViewResolver" 
      p:prefix="/WEB-INF/jsp/" 
      p:suffix=".jsp" /> 

    <!-- 
    The index controller. 
    --> 
    <bean name="indexController" 
      class="org.springframework.web.servlet.mvc.ParameterizableViewController" 
      p:viewName="index" /> 
    <!-- <bean name="/hello.htm" class="com.kibboko.poprocks.web.HelloController"/>--> 
</beans> 

applicationContext.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans ...> 

    <!--bean id="propertyConfigurer" 
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" 
      p:location="/WEB-INF/jdbc.properties" /> 

    <bean id="dataSource" 
      class="org.springframework.jdbc.datasource.DriverManagerDataSource" 
      p:driverClassName="${jdbc.driverClassName}" 
      p:url="${jdbc.url}" 
      p:username="${jdbc.username}" 
      p:password="${jdbc.password}" /--> 

    <!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) --> 

</beans> 

beans.xml 

<?xml version="1.0" encoding="UTF-8"?> 
<beans ...> 

    <!--bean id="propertyConfigurer" 
      class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" 
      p:location="/WEB-INF/jdbc.properties" /> 

    <bean id="dataSource" 
      class="org.springframework.jdbc.datasource.DriverManagerDataSource" 
      p:driverClassName="${jdbc.driverClassName}" 
      p:url="${jdbc.url}" 
      p:username="${jdbc.username}" 
      p:password="${jdbc.password}" /--> 

    <!-- ADD PERSISTENCE SUPPORT HERE (jpa, hibernate, etc) --> 

</beans> 

web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app ...> 
    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/applicationContext.xml</param-value> 
    </context-param> 
    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 
    <servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>redirect.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

ответ

5

Вы должны добавить @RequestMapping t o метод, а не класс. Если вы добавите его в класс, он будет применяться в качестве префикса для всех методов отображения этого класса, но вы также должны сопоставить методы этого класса.

+0

добавлен метод @RequestMapping (method = RequestMethod.GET) выше. все еще не работает. Нужно ли мне настроить что-то вроде автоматического сканирования xyz, чтобы Spring мог найти контроллеры? Бесконечно благодарен. – Bobo 2010-11-29 18:13:18

+0

@Bobo У вас есть , как говорит nickdos? – Javi 2010-11-30 17:10:55

11

Кроме того, необходимо добавить

<mvc:annotation-driven />

в файл грузоотправитель-servlet.xml.

2

У вас также может быть @RequestMapping для класса, но каждый метод также должен иметь свой собственный «@RequestMapping», пожалуйста, смотрите пример ниже.

@Controller 
@RequestMapping("/appointments") 
public class AppointmentsController { 

    private final AppointmentBook appointmentBook; 

    @Autowired 
    public AppointmentsController(AppointmentBook appointmentBook) { 
     this.appointmentBook = appointmentBook; 
    } 

    @RequestMapping(method = RequestMethod.GET) 
    public Map<String, Appointment> get() { 
     return appointmentBook.getAppointmentsForToday(); 
    } 

    @RequestMapping(value="/{day}", method = RequestMethod.GET) 
    public Map<String, Appointment> getForDay(@PathVariable @DateTimeFormat(iso=ISO.DATE) Date day, Model model) { 
     return appointmentBook.getAppointmentsForDay(day); 
    } 

    @RequestMapping(value="/new", method = RequestMethod.GET) 
    public AppointmentForm getNewForm() { 
     return new AppointmentForm(); 
    } 

    @RequestMapping(method = RequestMethod.POST) 
    public String add(@Valid AppointmentForm appointment, BindingResult result) { 
     if (result.hasErrors()) { 
      return "appointments/new"; 
     } 
     appointmentBook.addAppointment(appointment); 
     return "redirect:/appointments"; 
    } 
} 
Смежные вопросы