Spring MVC @Controller创建空响应

时间:2014-05-14 08:16:10

标签: spring spring-mvc response is-empty

我正在尝试使用Spring MVC 4.0.4-RELEASE构建REST-Api。该应用程序包含多个maven模块,如域,服务等......

当我在浏览器中运行webapp并向api / test发出请求时,我希望将String作为响应。但是我总是在浏览器中使用http状态200进行响应,以及卷曲。但它也没有在我的类路径中与JSON和Jackson2一起工作。

似乎ping方法永远不会被调用,但请求处理似乎没问题。?!

DEBUG o.s.w.s.DispatcherServlet - DispatcherServlet with name 'dispatcher' processing GET request for [/api/test]
DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Looking up handler method for path /test
DEBUG o.s.w.s.m.m.a.RequestMappingHandlerMapping - Returning handler method [public java.lang.String api.resource.TestResource.ping()]
DEBUG o.s.w.s.DispatcherServlet - Last-Modified value for [/api/test] is: -1
DEBUG o.s.w.s.DispatcherServlet - Successfully completed request

还有一个处理程序拦截器,它永远不会被调用,因为看起来春天并没有“跳跃”#34;进入处理程序方法......

这是我的@Controller的代码和Web配置:

@Controller
public class TestResource {

    @ResponseBody
    @RequestMapping(value = "/test", method = RequestMethod.GET)
    public String ping() {
        LOG.debug("Request received.");
        final Account account = new Account.Builder("m@m.de", "123456", new Date(), new Role.Builder("Role_USER").build()).build();
        return account.toString();
    }
}


@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "api.resource" })
public class ApiConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new RequestTimeProcessingInterceptor());
        super.addInterceptors(registry);
    }
}


public class ApiInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class<?>[] { EventingConfig.class, RepositoryConfig.class, MailConfig.class, ServiceConfig.class };
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class<?>[] { ApiConfig.class };
    }

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

    @Override
    protected Filter[] getServletFilters() {
        CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
        characterEncodingFilter.setEncoding("UTF-8");
        return new Filter[] { characterEncodingFilter };
    }
}

这对我来说似乎是一个有效的配置,因为通过maven和嵌入式tomcat7或Eclpse WTP运行应用程序没有问题。 我想这是一个非常简单的解决方案,但不幸的是我现在无法看到它..

所以我很感激任何想法!

谢谢!

0 个答案:

没有答案