2016-12-14 1 views
1

프로젝트에 spring mvc hibernate를 사용하고 있습니다. 이제 매핑이 중단되었습니다.스프링 mvc 매핑 문제

일반적인 URL은 다음과 같습니다 localhost:8080/Carre2/addproduct/edit/home

내가 어떻게 아무 생각이 : 나는 그가이 요청 antoher 페이지로 이동하려는 경우 localhost:8080/Carre2/......

Somepages이 localhost:8080/Carre2/addproduct/edit/1

같은 몇 가지 매개 변수가 이 매핑 문제를 해결하십시오. 누군가 도움을받을 수 있습니까?

일부 코드 : 여기

public class AddproductController { 

private ProductService productService; 

@Autowired(required = true) 
@Qualifier(value = "productService") 
public void setProductService(ProductService ps) { 
    this.productService = ps; 
} 

@RequestMapping(value = "/addproduct", method = RequestMethod.GET) 
public String listProduct(Model model) { 
    model.addAttribute("product", new Product()); 
    model.addAttribute("listProduct", this.productService.listProduct()); 
    return "addproduct"; 
} 

//For add and update person both 
@RequestMapping(value = "/addproduct/add", method = RequestMethod.POST) 
public String addProduct(@ModelAttribute("product") Product p) { 

    if (p.getId() == 0) { 
     //new person, add it 
     this.productService.addProduct(p); 
    } else { 
     //existing person, call update 
     this.productService.updateProduct(p); 
    } 

    return "redirect:/addproduct"; 

} 

@RequestMapping("addproduct/update/{id}") 
public String updateProduct(@PathVariable("id") int id, Model model) { 
    model.addAttribute("product", this.productService.getProductById(id)); 
    model.addAttribute("listProduct", this.productService.listProduct()); 
    return "productlist"; 
} 

@RequestMapping("addproduct/edit/{id}") 
public String editProduct(@PathVariable("id") int id, Model model) { 
    model.addAttribute("product", this.productService.getProductById(id)); 
    model.addAttribute("listProduct", this.productService.listProduct()); 
    return "addproduct"; 
} 

내 서블릿-context.xml에 다음

<!-- DispatcherServlet Context: defines this servlet's request-processing 
infrastructure --> 




<!-- Resolves views selected for rendering by @Controllers to .jsp resources 
in the /WEB-INF/views directory --> 
<beans:bean 
    class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <beans:property name="prefix" value="/WEB-INF/views/" /> 

    <beans:property name="suffix" value=".jsp" /> 
</beans:bean> 
<resources mapping="/resources/**" location="/resources/carre/" cache-period="31556926"/> 
<!-- Enables the Spring MVC @Controller programming model --> 
<annotation-driven /> 

<beans:bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
      destroy-method="close"> 
    <beans:property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <beans:property name="url" 
        value="jdbc:mysql://localhost:3306/carre" /> 
    <beans:property name="username" value="root" /> 
    <beans:property name="password" value="...." /> 
</beans:bean> 

<!-- Hibernate 4 SessionFactory Bean definition --> 
<beans:bean id="hibernate4AnnotatedSessionFactory" 
      class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <beans:property name="dataSource" ref="dataSource" /> 
    <beans:property name="annotatedClasses"> 
     <beans:list> 
      <beans:value>com.carre.model.Person</beans:value> 
      <beans:value>com.carre.model.Product</beans:value> 
      <beans:value>com.carre.model.Categorie</beans:value> 
      <beans:value>com.carre.model.Catalogus</beans:value> 
      <beans:value>com.carre.model.Voorstelling</beans:value> 

     </beans:list> 
    </beans:property> 
    <beans:property name="hibernateProperties"> 
     <beans:props> 
      <beans:prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect 
      </beans:prop> 
      <beans:prop key="hibernate.show_sql">true</beans:prop> 
     </beans:props> 
    </beans:property> 
</beans:bean> 
<beans:bean id="catalogusDAO" class="com.carre.dao.CatalogusDAOImpl"> 
    <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" /> 
</beans:bean> 
<beans:bean id="CatalogusService" class="com.carre.service.CatalogusServiceImpl"> 
    <beans:property name="catalogusDAO" ref="catalogusDAO"></beans:property> 
</beans:bean> 

<beans:bean id="personDAO" class="com.carre.dao.PersonDAOImpl"> 
    <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" /> 
</beans:bean> 
<beans:bean id="personService" class="com.carre.service.PersonServiceImpl"> 
    <beans:property name="personDAO" ref="personDAO"></beans:property> 
</beans:bean> 
<beans:bean id="productDAO" class="com.carre.dao.ProductDAOImpl"> 
    <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" /> 
</beans:bean> 
<beans:bean id="productService" class="com.carre.service.ProductServiceImpl"> 
    <beans:property name="productDAO" ref="productDAO"></beans:property> 
</beans:bean> 

<beans:bean id="categorieDAO" class="com.carre.dao.CategorieDAOImpl"> 
    <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" /> 
</beans:bean> 
<beans:bean id="CategorieService" class="com.carre.service.CategorieServiceImpl"> 
    <beans:property name="categorieDAO" ref="categorieDAO"></beans:property> 
</beans:bean> 

<beans:bean id="voorstellingDAO" class="com.carre.dao.VoorstellingDAOImpl"> 
    <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" /> 
</beans:bean> 
<beans:bean id="VoorstellingService" class="com.carre.service.VoorstellingServiceImpl"> 
    <beans:property name="voorstellingDAO" ref="voorstellingDAO"></beans:property> 
</beans:bean> 

<context:component-scan base-package="com.carre.controller" /> 

<tx:annotation-driven transaction-manager="transactionManager"/> 

<beans:bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <beans:property name="sessionFactory" ref="hibernate4AnnotatedSessionFactory" /> 
</beans:bean> 

내가 URL에 도착하는 방법이다. c:url value='addproduct/edit/${product.id}'

답변

0

전 C를 사용하는 것이 좋습니다 : URL을 아래처럼 그것을 해결하기 위해 :

기본적으로
c:url value="${pageContext.request.contextPath}/addproduct/edit/${product.id}" 

각 C에 대한 $ {pageContext.request.contextPath}을 취하려고 : 홈페이지

에게 그것을 "로컬 호스트 : 8080/Carre2"로 변환됩니다 당신은 단지 다음과 같이 접근 할 필요가

0

,

c:url value='/addproduct/edit/${product.id}' 

이렇게하면 url이 컨텍스트 경로에서 시작됩니다.

또는 더 나은 방법은 컨텍스트 경로를 전역으로 저장하고 각 URL에서 사용할 수 있습니다. 컨텍스트 경로는 다음과 같이 참조 할 수 있습니다.

c:url value="${pageContext.request.contextPath}/addproduct/edit/${product.id}"