首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用带注释的控制器帮助spring-json

使用带注释的控制器帮助spring-json
EN

Stack Overflow用户
提问于 2010-01-11 05:12:49
回答 1查看 6.8K关注 0票数 1

我在互联网上搜索了一个同时使用spring-json和带注释的控制器的例子,我是spring的新手,所以我没有机会在spring-json的示例上修改配置(它使用SimpleController et。al.)

目前,我有一个带有两个映射的控制器,一个以html格式列出结果(和工作),另一个应该为一些ajax调用呈现json,但当我访问url时,它返回404并要求/myapp/jsp/jsonView.jsp。show方法上的代码确实执行了,它甚至验证了id参数的存在,所以问题似乎是它不知道如何呈现,据我所知,这就是viewResolver bean所做的事情。

提前感谢您的帮助:)

下面是我得到的信息:

代码语言:javascript
复制
@Controller
public class ItemController {

 //This one works
 @RequestMapping(value = "/items", method = RequestMethod.GET)
 public ModelMap list() {
     ModelMap map = new ModelMap();
     map.addAttribute("item", "value");
     return map;
 }
 //This one returns 404, asks for jsonView.jsp
 @RequestMapping(value = "/items.json", method = RequestMethod.GET)
 public ModelAndView show(@RequestParam(value = "id", required = true) String id) {
    Map model = new HashMap();
    model.put("firstname", "Peter");
    model.put("secondname", "Schmitt");
    return new ModelAndView("jsonView", model);
  }
}

在myapp-servlet.xml上:

代码语言:javascript
复制
    <bean name="viewResolver" class="org.springframework.web.servlet.view.XmlViewResolver"/>

在views.xml上:

代码语言:javascript
复制
<beans>
<bean name="jsonView" class="org.springframework.web.servlet.view.json.JsonView">
    <property name="encoding">
        <value>UTF-8</value>
    </property>
    <property name="contentType">
        <value>application/json</value>
    </property>
    <property name="jsonWriter">
        <ref bean="sojoJsonWriter"/>
    </property>
    <property name="jsonErrors">
        <list>
            <ref bean="statusError"/>
            <ref bean="modelflagError"/>
        </list>
    </property>
</bean>

<bean name="sojoJsonWriter" class="org.springframework.web.servlet.view.json.writer.sojo.SojoJsonStringWriter">
    <property name="convertAllMapValues">
        <value>true</value>
    </property>
</bean>

<bean name="statusError" class="org.springframework.web.servlet.view.json.error.HttpStatusError">
    <property name="errorCode">
        <value>311</value>
    </property>
</bean>
<bean name="modelflagError" class="org.springframework.web.servlet.view.json.error.ModelFlagError">
    <property name="name">
        <value>failure</value>
    </property>
    <property name="value">
        <value>true</value>
    </property>
</bean>

web.xml:

代码语言:javascript
复制
<servlet>
 <servlet-name>myapp</servlet-name>
 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 <load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
 <servlet-name>myapp</servlet-name>
 <url-pattern>/myapp/*</url-pattern>
</servlet-mapping>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-14 23:05:54

问题出在order上的视图解析器上,它添加了p: servlet.xml属性,因此它将在InternalResourceViewResolver之前加载

代码语言:javascript
复制
    <bean name="viewResolver" class="org.springframework.web.servlet.view.XmlViewResolver" p:order="1"/>
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/jsp/"p:suffix=".jsp" p:order="10"/>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2038642

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档