2013-08-02 2 views
0

У меня нет сопоставления для диспетчерского сервлета. можете ли вы указать мне, где проблема в коде. Я новичок в Spring MVCНет сопоставления для HTTP-запроса весной mvc

Моей Ошибка (Мой П имеет артефакт из EnhancedRoyaltyTool)

No mapping found for HTTP request with URI [/EnhancedRoyaltyTool/] in DispatcherServlet with name 'mvc-dispatcher 

Моего web.xml файл

<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

    <display-name>Spring Web MVC Application</display-name> 


    <servlet> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/mvc-dispatcher-servlet.xml</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 




<!-- <listener> --> 
<!--   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> --> 
<!--  </listener> --> 
</web-app> 

Моего MVC-диспетчерского-сервлет. XML-файл файл

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xmlns:mvc="http://www.springframework.org/schema/mvc" 
     xmlns:context="http://www.springframework.org/schema/context" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans 
     http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 
     http://www.springframework.org/schema/context 
     http://www.springframework.org/schema/context/spring-context-3.0.xsd 
     http://www.springframework.org/schema/mvc 
     http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> 

    <context:component-scan base-package="com.acxiom.saas.royalty.controller"/> 

    <mvc:annotation-driven/> 



    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix"> 
      <value>/WEB-INF/pages/</value> 
     </property> 
     <property name="suffix"> 
      <value>.jsp</value> 
     </property> 
    </bean> 

</beans> 

My Controller

@Controller 
public class SearchController 
{ 

    @ModelAttribute("search") 
    public Search getSearch() 
    { 
     return new Search(); 
    } 


    @RequestMapping(value ="/") 
    public String homePage() 
    { 
     System.out.println("home");  

     return "search";   
    } 

    @RequestMapping(value ="/payRoyalties", method = RequestMethod.POST) 
    public String searchJobs(ModelMap model, @ModelAttribute("search") Search search) 
    { 
     System.out.println(search.getOesNumber() +"TEST"); 
     model.addAttribute("test", "testing modelmap"); 

     return "payRoyalties";  
    } 

} 

мой search.jsp файл

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" 
    pageEncoding="ISO-8859-1"%> 
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Search For Jobs</title> 
</head> 
<body> 

    <form:form method="POST" modelAttribute="search" action="payRoyalties" > 
     <table> 
      <tr> 
       <td><form:label path="oesNumber">OES Number</form:label></td> 
       <td><form:input path="oesNumber" /></td> 
      </tr> 
      <tr> 
       <td colspan="2"><input type="submit" value="Search" /></td> 
      </tr> 
     </table> 

    </form:form> 

</body> 
</html> 

У меня есть файл payRoyalties.jsp и поиска модели.

+0

Не могли бы вы искать "Mapped URL на", чтобы проверить, какой контроллер переходит к конкретному URL? – Hippoom

+0

Можете ли вы объяснить мне более подробно? Я очень новичок в весеннем mvc. Сама внутренняя домашняя страница не загружается при развертывании приложения. –

+0

Сверните свой уровень журнала до DEBUG и проверьте свой журнал. Есть ли такая строка, как «Mapped» {[/ payRoyalties], ......} »на public java.lang.String SearchController .searchJobs (org.springframework.ui.Model) ...» при запуске сервера ? – Hippoom

ответ

1

В вашем классе нет сопоставления с именем search.

Вам нужно добавить @RequestMapping (значение = «/ поиск») перед вашим getSearch() Метод

+0

. Метод homepage указывает на страницу search.jsp. –

+0

. Одна вещь, заяц, обработчики не имеет ничего общего с именем jsp, вы можете переименовать ваш jsp на что угодно и изменить возвращаемое значение в вашем getSearch метод. Вы добавили '@ModelAttribute (« поиск »)' по одному из ваших методов, это используется в вашем обработчике, где вы добавили одну и ту же аннотацию к одному из параметров метода. – varun

0

Я думаю, что проблема заключается в конфигурации веб-сервлета. Я видел этот случай раньше, когда Spring смешивает между URL-адресом сопоставления с отображением в JSP-файлы.

Короче говоря, вместо:

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

Вы должны попробовать:

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>/*.html</url-pattern> 
</servlet-mapping> 

Затем попробуйте доступ контроллер с /payRoyalties.html

+0

Спасибо за ответ, но когда я перейду на это, мое приложение не сможет выполнить развертывание. –

+0

LOG: SEVERE: дочерний контейнер не сработал во время запуска java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: не удалось запустить компонент [StandardEngine [Catalina] .StandardHost [localhost] .StandardContext [/ EnhancedRoyaltyTool]] –

+0

@SandeepRao: он не должен терпеть неудачу. Должны быть проблемы в других местах, можете ли вы предоставить мне полную стеклу? –

0
@ModelAttribute("search") 
public Search getSearch() 
{ 
    return new Search(); 
} 

Выше часть вашего кода сбивает с толку, у вас есть «поиск» в @ModelAttribute, пока нет «поиска» для @RequestMapping, что вы пытаетесь сделать это.

предоставьте лог для получения дополнительной помощи.

+0

02 августа 2013 г. 8:51:23 org.springframework.web.servlet.DispatcherServlet noHandlerFound ВНИМАНИЕ: сопоставления не найдено для HTTP-запроса с URI [/ EnhancedRoyaltyTool /] в DispatcherServlet с именем 'mvc-dispatcher' –

+0

@ModelAttribute search непосредственно используется на странице search.jsp. Я понимаю, что когда ваш load.jsp загружает, он автоматически связывает вызов метода getSearch и связывает его с объектом поиска на странице jsp. –

+0

Да, я пропустил, что у вас есть поиск в качестве модели, определенной в одном из методов вашего обработчика, это кажется прекрасным. Проблема кажется очень очевидной: «Нет сопоставления, найденного для HTTP-запроса с URI [/ EnhancedRoyaltyTool /] в DispatcherServlet', это означает, что вам нужно, чтобы метод обработчика сопоставлен с этим URL-адресом, например' @RequestMapping ("/ EnhancedRoyaltyTool") ' , Надеюсь, это единственное, что неправильно – varun

0

Вы хотите:

@Controller 
@RequestMapping("/search") 
public class SearchController { 
    … 
} 
+0

Я не думаю, что это проблема. поскольку он не набирает url/search ", см. tag" action = "payRoyalties", и для этого уже определено отображение. журнал очистит вещи немного больше. – varun

Смежные вопросы