2016-03-04 3 views
0

Это инициализатор для Spring. Я не использую файлы .xml.Контроллер регистрирует, но получает 404 при возврате данных

import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; 

import javax.servlet.ServletContext; 
import javax.servlet.ServletException; 

@Configuration 
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return new Class<?>[]{ 
       WebAppConfig.class, 
       SecurityConfig.class, 
       DatabaseConfig.class, 
       DataSourceGenerator.class, 
       QuartzConfig.class, 
       QueueConfig.class 
     }; 
    } 

    @Override 
    public void onStartup(ServletContext servletContext) throws ServletException { 
     super.onStartup(servletContext); 
     servletContext.addFilter(
       "facilityFilter", new FacilityServletFilter() 
     ).addMappingForUrlPatterns(null, false, "/api/*"); 

     servletContext.addFilter(
       "hmacFilter", new HmacFilter() 
     ).addMappingForUrlPatterns(null, false, "/api/*"); 
    } 

    @Override 
    protected String[] getServletMappings() { 
     return new String[]{"/"}; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return null; 
    } 
} 

Это один из моих контроллеров.

@Controller 
@RequestMapping(value = "/install") 
public class HelloController { 

    @RequestMapping(value = "/hi", method = RequestMethod.GET, 
      consumes = "*/*", produces = "text/html") 
    public String sayHello(){ 
     return "<html> <head> <title>API</title>" + 
       "</head>  <body>  <h1>Welcome to the Eric</h1>" + 
       "</body>  </html>"; 
    } 

} 

Все мои другие контроллеры появляются работать должным образом, но это один возвращает 404 ошибку, когда я пытаюсь попасть в конечную точку. Код попадает в отладчик, когда я вызываю его через Postman.

ответ

0

Добавить @ResponseBody в ваш метод контроллера, иначе пружина будет пытаться искать для зрения с именем "<html> <head> <title>API</title>..."

@Controller 
@RequestMapping(value = "/install") 
public class HelloController { 

    @RequestMapping(value = "/hi", method = RequestMethod.GET, consumes = "*/*", produces = "text/html") 
    @ResponseBody 
    public String sayHello(){ 
     return "<html> <head> <title>API</title>" + 
       "</head>  <body>  <h1>Welcome to the Eric</h1>" + 
       "</body>  </html>"; 
    } 

} 
0

По предложению Raplh вы можете сделать это, но если вы планируете иметь больше из этих методов может а также просто замените @Controller на @RestController