Не удалось разрешить представление с именем 'streamrecords' в сервлете с именем 'spring' - PullRequest
0 голосов
/ 06 мая 2019

Я использую простой номер потока из примера контроллера, используя Spring 4, Java 8, Tomcat 7 .

КОД:

package com.entrib.emg.server.controller.rest;
import java.io.IOException;
import java.io.OutputStream;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.mvc.method.annotation.StreamingResponseBody;

@Controller
public class StreamRecordsController {

    @RequestMapping(value = "/streamrecords", method = RequestMethod.GET)
    public StreamingResponseBody handleRequest ()
            throws Exception {

        return new StreamingResponseBody() {
            @Override
            public void writeTo (OutputStream out) throws IOException {
                for (int i = 0; i < 1000; i++) {
                    out.write((Integer.toString(i) + " - ")
                                        .getBytes());
                    out.flush();
                    try {
                        Thread.sleep(5);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        };
    }
}

ОШИБКА:

Type Exception Report

Message Could not resolve view with name 'streamrecords' in servlet with name 'spring'

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

javax.servlet.ServletException: Could not resolve view with name 'streamrecords' in servlet with name 'spring'
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1266)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1041)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:984)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:624)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
Note The full stack trace of the root cause is available in the server logs.

НИЖЕ СНИМКА:

enter image description here

ВОПРОС:

Что мне здесь не хватает.

ОЖИДАНИЯ:

Это простой код API отдыха, я ожидаю, что поток целых чисел будет транслироваться с этого контроллера, когда API будет получен из браузера или почтальона.

-------------------------------------------- ----

ОБНОВЛЕНО

-------------------------------------------- ----

Когда я добавил @ResponseBody, я получаю ошибку ниже,

Type Status Report

Description The target resource does not have a current representation that would be acceptable to the user agent, according to the proactive negotiation header fields received in the request, and the server is unwilling to supply a default representation.

Ответы [ 2 ]

0 голосов
/ 06 мая 2019

Просто измените аннотацию вашего класса на @ RestController

0 голосов
/ 06 мая 2019

В вашем методе сервлета отсутствует @ResponseBody, либо вы можете пометить свой класс с помощью @ RestController

...