Как добавить хлебные крошки в Spring MVC?

Как я могу добавить хлебные крошки на все страницы Spring MVC? Я полагаю, что это был бы хороший вопрос, поскольку панировочные сухари сейчас довольно популярны, и это может быть вопрос многих других.

Я нашел это решение, которое использует dummiesmind.breadcrumb.springmvc.annotations, там также является вопросом на stackoverflow, но я не мог многому научиться, кроме как найти решение, похожее на то, которое нашел я. Другим решением является это, использующее JavaScript.

У кого-нибудь есть лучший вариант из тех, что я упомянул?

@Link(label="Sample Link", family="controllerFamily", parent="");                                                                  
@RequestMapping(value = "sample.do", method=RequestMethod.GET);
public ModelAndView sampleMethod(HttpSession session){...}

person Jack    schedule 17.03.2015    source источник
comment
Это навигационные или панировочные сухари моего путешествия? Навигационные хлебные кучки могут быть выполнены с использованием атрибутов списка плиток, переопределенных в каждом определении. my-journey — это скорее объект сеанса.   -  person mck    schedule 23.03.2015
comment
@mck Я не уверен, в чем разница, но я полагаю, что мне подойдет тот, который можно сделать с помощью плиток.   -  person Jack    schedule 24.03.2015


Ответы (1)


Что вы используете для отображения своих страниц? JSP? Лист тимьяна?

Ссылка, на которую вы указываете, кажется хорошим вариантом, или, по крайней мере, вы можете создать что-то индивидуальное, что работает для вас, основываясь на этом. Использование аннотаций сохраняет ваш код чистым, но вы должны убедиться, что добавляете их везде.

Вы можете использовать абстрактный контроллер, в котором вы определяете метод для создания объекта ModelAndView для всех страниц. Вы можете добавить панировочные сухари таким образом:

protected ModelAndView createModelAndView(String pageName, BreadCrumb breadCrumb) {
    ModelAndView modelAndView = new ModelAndView(pageName);
    modelAndView.addObject("breadCrumb", breadCrumb);
    return modelAndView;
}

Конечно, вам нужно будет вызывать этот метод каждый раз в вашей реализации.

Одним из вариантов использования этого может быть передача URL-адреса вашего запроса в качестве параметра и его анализ для создания хлебных крошек путем связывания текста с каждой частью пути (используя текущий локальный адрес для его преобразования). Так, например, «/admin/user/list» даст вам Дом >> Администрирование >> Управление пользователями >> Список пользователей. Это должно быть легко построить.

person Damien Polegato    schedule 17.03.2015
comment
Я использую Tiles3, JSP - person Jack; 17.03.2015
comment
Если я добавлю это везде в код, это будет похоже на решение для аннотаций. В чем преимущество этого перед тем? - person Jack; 17.03.2015
comment
Ну, это просто еще одна возможность. Я использую Thymeleaf, так что это удобный способ делать такие дополнения к общей модели. В любом случае вам нужно будет либо уточнить структуру на всех страницах, либо иметь способ построить ее в общем виде. - person Damien Polegato; 18.03.2015