Отображение JFreeChart с Spring MVC (сопоставление не найдено)

Я знаю, что есть много подобных постов. Но я не нашел полного кода того, как отображать JFreeChart в теге <img>.

Я показываю изображение при загрузке страницы.

ПРИМЕЧАНИЕ. URL этой страницы:

@RequestMapping( value = "/admin/student", method = RequestMethod.GET )

На той же странице я пытаюсь загрузить изображение с другим сопоставлением URL. (я не знаю, возможно ли это, но я думаю, что сопоставление URL-адресов является ошибкой)

<div class="chart-image">
    <img src="../admin/student/getChart.do" class="img-rounded" />
</div>

Контроллер, отображающий диаграмму, таков:

@RequestMapping( value = "/{prePath:^tutor$|^admin$}/student/getChart", method = RequestMethod.GET )
public void displayChart( HttpServletResponse response )
{
    response.setContentType( "image/png" );
    try
    {
        JFreeChart chart = getChart();
        ChartUtilities.writeChartAsPNG( response.getOutputStream(), chart, 600, 400 );
        response.getOutputStream().close();
    }
    catch( IOException e )
    {
        // no logger yet
        e.printStackTrace();
    }
}

Я получаю это сообщение с моей консоли:

ПРЕДУПРЕЖДЕНИЕ: не найдено сопоставление для HTTP-запроса с URI [/ThesisProject/admin/student/getChart.do] в DispatcherServlet с именем «ThesisProject».

Я не понимаю, почему мой тег <img> не видит контроллер, который должен отображать диаграмму.


person Cadis Etrama Di Raizel    schedule 12.11.2013    source источник


Ответы (1)


У вас есть расширение .do в вашем URL-адресе, но нет в вашем @RequestMapping, поэтому измените сопоставление, чтобы включить его:

@RequestMapping( value = "/{prePath:^tutor$|^admin$}/student/getChart.do", method = RequestMethod.GET )

Или вы всегда можете удалить расширение .do из URL-адреса в теге <img>, но это зависит от того, как вы отображаете DispatcherServlet в web.xml (т.е. *.do)

person John Farrelly    schedule 12.11.2013