关闭自动视图分辨率弹簧4

时间:2014-02-12 20:21:22

标签: java spring spring-mvc

我在IntelliJ中使用spring MVC模板来创建一个Web服务,以便从休息调用中生成JSON。

package com.planit.mvc;

@RestController
@RequestMapping("/rest")
public class BasicRestController {

    @RequestMapping(value = "/test/{name}", produces = MediaType.APPLICATION_JSON_VALUE)
    public Person test(@PathVariable String name) {
        Person p = new Person();
        p.setAge(10);
        p.setFirstName(name);
        p.setLastName(name);
        return p;    
    }        
}

servlet调度程序XML如下:

<context:component-scan base-package="com.planit.mvc"/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/pages/"/>
    <property name="suffix" value=".jsp"/>
</bean>

因此,当我导航到URL时,它会尝试根据URL的{name}参数解析视图时抛出错误。

实现我正在寻找的东西的正确方法是什么,同时仍然允许自动查看分辨率?

编辑:当我拨打网址时如:

http://localhost:8080/rest/test/variable

所以点击BasicRestController,方法测试由于url的/ test部分,后跟PathVariable“变量”我在tomcat中得到这个错误:

HTTP状态404 - /WEB-INF/views/rest/test/variable.jsp

所以看起来它试图解析视图variable.jsp当然不存在。我只是希望它能够回馈Person对象的JSON表示,而不必将其渲染到视图中。

1 个答案:

答案 0 :(得分:3)

我相信你刚刚从servlet上下文配置中遗漏<mvc:annotation-driven/>。不要忘记添加名称空间声明和schemaLocation值。