2013-06-03 3 views
1

Привет, я создал приложение Spring MVC, у меня есть контроллер под названием Оценка с помощью двух методов.Spring MVC restful path

я могу получить доступ к методу домой этот контроллер, перейдя в этот адрес www.wesite.com/xyz/estimation

, но я пытаюсь получить доступ homeById метода, перейдя на эту ссылку www.wesite.com/xyz/estimation/1 Я получаю ошибку 404, запрашиваемый ресурс недоступен.

может любой корпус пролить свет на него.

@Controller 
@RequestMapping("/estimation") 
public class EstimationController { 

@RequestMapping("") 
public ModelAndView home(HttpServletRequest request, HttpServletResponse response) { 

    ModelAndView mv = new ModelAndView("productEstimate"); 
    return mv; 

    } 

    @RequestMapping(value="/{productId}", method = RequestMethod.GET) 
    public ModelAndView homeById(HttpServletRequest request, HttpServletResponse response,@PathVariable int productId) { 

    ModelAndView mv = new ModelAndView("productEstimate"); 

    return mv; 
} 

web.xml

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

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     WEB-INF/classes/spring/applicationContext.xml, 
     WEB-INF/classes/spring/hibernateContext.xml 
    </param-value> </context-param> 

<servlet> 
    <servlet-name>projectName</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <init-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value></param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
</servlet> 


<servlet-mapping> 
    <servlet-name>projectName</servlet-name> 
    <url-pattern>/estimation/*</url-pattern> 
</servlet-mapping> 

applicationContext.xml

<mvc:annotation-driven /> 

<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> 
     <property name="resourceLoaderPath" value="/views/" /> 
</bean> 

<bean id="viewResolver" class="org.springframework.web.servlet.view.velocity.VelocityViewResolver"> 
     <property name="cache" value="true"/> 
     <property name="prefix" value=""/> 
     <property name="layoutUrl" value="layout.vm"/> 
     <property name="suffix" value=".vm"/> 
</bean> 
+1

Вы можете получить эту ошибку и, если отображение не совпадают или если представление не может быть отображено (но я вижу, что вы используете одно и то же представление для обоих запросов, поэтому, если первое работает, то и второе). Посмотрите, есть ли у вас ошибка типа «ПРЕДУПРЕЖДЕНИЕ: нет сопоставления для HTTP-запроса с URI» – namero999

ответ

2

Когда речь идет о пути переменных использовать что-то вроде этого

@PathVariable("productId") int productId 

Этого закрытого переменного имени такого же, как имя переменного в отображении запроса

@RequestMapping(value="/{productId}", method = RequestMethod.GET) 
Смежные вопросы