2013-05-01 1 views
1

사용자가 ID로 사용자를 검색하고 페이지에서 할당 된 모듈을 검색합니다. 필자는 모델에서 일대 다 관계를 매핑했습니다.Spring @PathVariable은 HTTP 상태를 반환합니다. 404

사용자 모델

@Entity 
@Table(name = "user") 
@Component 
    public class User implements Serializable 
    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="user") 
    private Set<Module> sModule = new HashSet<Module>(); 

    @OneToMany(cascade=CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="manager") 
    private Set<Module> cModule = new HashSet<Module>(); 

모듈 모델 그것을 위해

@Entity 
    @Table(name = "modules") 
    @Component 
    public class Module implements Serializable 
    @ManyToOne(fetch=FetchType.LAZY) 
    @JoinColumn(name="user_id", insertable=false, updatable=false) 
    private User user; 

    @ManyToOne(fetch=FetchType.LAZY) 
    @JoinColumn(name="manager_id", insertable=false, updatable=false) 
    private User manager; 

컨트롤러 -

@RequestMapping(value="/home/user_page/{userId}", method = 

    RequestMethod.GET) 
public String showUserModules(@PathVariable("userId") String userId, ModelMap 

    map, HttpServletRequest request) { 
    map.addAttribute("cp", request.getContextPath()); 
    map.addAttribute("user", userService.getWithModules(userId)); 

    return "/home/user_page";} 

나는 그것이 오류를 보여주는 반환 user_page 열려고 :

The requested resource is not available 

사용자 페이지로 갈 때 어떻게 사용자와 필요한 모듈을 얻을 수 있습니까?

편집 : 스택 트레이스

WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP 

    request with URI [/professional/home/user_page] in DispatcherServlet 

    with name 'servlet-context' 
+0

안녕하세요. 이 오류가 발생하면 어떤 URL을 사용합니까? – dimas

+0

실제 스택 추적이란 무엇입니까? – Bart

+0

안녕하세요, stacktrace를 첫 번째 게시물에 추가했습니다. URI가있는 HTTP 요청에 대해 매핑이 없다는 경고가 한 줄로 표시되었습니다. – user2259555

답변

0

나는 귀하의 경우 문제가 컨트롤러의 두 가지 방법 비슷한 매핑에 의해 coused 생각합니다. 필자가 알고있는 것처럼 "/ home/user/setting_page"와 "/ home/user/{userId}"와 같은 매핑 방법을 가지고 있습니다. 그래서 userId 경로를 추가 한 후에 variable controller가 "setting_page"를 userId로 구문 분석하려고 시도하고 사용자가 존재하지 않기 때문에이 오류가 발생합니다. 이 URL 중 하나를 고유하게 만들기 위해 변경하십시오.

편집 :

좋아. 여러분의 업데이트에서 볼 수 있듯이, Spring은 url "home/user_page"에 대한 매핑을 찾기 위해 시도하지만, 컨트롤러에서 그러한 매핑을 가진 메소드를 가지고 있지 않기 때문에 그렇게 할 수 없습니다. 이 메소드 호출의 결과로 JSP (또는 HTML)를 표시하려면 구성 파일에 InternalViewResolver를 정의하고 페이지의 이름을 반환해야합니다. 여기 tutorial은 InternalViewResolver를 사용하는 방법에 대해 설명합니다.

+0

안녕하세요, 오류가 발생하여 죄송합니다. 원하는 URL은 localhost : 8080/project/home/user/{userId}입니다. 따라서 사용자가 링크를 클릭하면 사용자 ID와 모듈 목록이있는 특정 페이지로 연결됩니다. 이것은 컨트롤러 메서드에서 값으로 가지고있는 URL입니다. – user2259555

+0

더 많은 정보를 제공 한 후에 내 게시물을 편집했습니다. 이게 당신을 도울 수 있기를 바랍니다. – dimas