2013-05-01 3 views
1

То, что я пытаюсь получить, возвращает пользователя по их идентификатору, а также извлекает модули, назначенные им на странице. Я сопоставил одно отношение ко многим в моделях.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 

Как я могу получить пользователь и необходимые модули для них, когда я иду на их страницу пользователя.

Edit: StackTrace

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 к первому сообщению. Это было однострочное предупреждение о отсутствии сопоставления для HTTP-запроса с URI. – user2259555

ответ

0

Я думаю, что проблема в вашем случае coused подобным отображением для двух методов в контроллерах. Как я понял, один из методов имеет сопоставление, например, «/ home/user/setting_page», а другой - «/ home/user/{userId}». Вот почему после того, как вы добавили контроллер переменной userId, пытается проанализировать «setting_page» как userId, и вы получите эту ошибку, потому что такой пользователь не существует. Попробуйте изменить один из этих URL, чтобы сделать их уникальными.

EDIT:

Ok. Как я вижу из ваших обновлений, причиной этой проблемы является то, что Spring пытается найти сопоставление для URL-адреса «home/user_page», но это невозможно, потому что у вас нет метода с таким отображением в контроллерах. Если вы хотите отобразить JSP (или html) в результате этого вызова метода, вы должны определить InternalViewResolver в вашем файле конфигурации и вернуть имя страницы. Вот tutorial, где среди других описано, как использовать InternalViewResolver.

+0

Здравствуйте, извините, я сделал ошибку, URL-адрес, который я хочу, - localhost: 8080/project/home/user/{userId}. Поэтому, когда пользователь нажимает на ссылку, они переходят на определенную страницу с идентификатором пользователя и списком модулей. Это URL-адрес, который у меня есть как значение в моем методе контроллера. – user2259555

+0

Я поместил свой пост после того, как предоставил дополнительную информацию. Я надеюсь, что это поможет вам. – dimas

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