一个Spring + Json异常的问题

Spring可以轻易实现在Controller中将一个对象转成Json放在ResponseBody中返回,如下:

@RequestMapping(value = "/getqbankrecord/{qbId}/{id}", method = RequestMethod.GET)
@ResponseBody
public QuestionRecord getQuestionBankRecord(@PathVariable("qbId") int qbId, 
@PathVariable("id") int id,
HttpServletRequest request)
{
assert(qbService != null);
this.logger.info("this is getQuestionBankRecord ......");
        
QuestionRecord record = qbService.getQRecord(qbId, id);

return record;
}

并且在容器中配置messageConverters

    <!-- Json --> 
    <beans:bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
        <beans:property name="messageConverters">
            <util:list id="beanList">
                <beans:bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
                    <!-- 
					<beans:property name="supportedMediaTypes"> 
					   <beans:list> 
					       <beans:value>text/html;charset=UTF-8</beans:value> 
					       <beans:value>text/json;charset=UTF-8</beans:value>
					       <beans:value>application/json;charset=UTF-8</beans:value>
					   </beans:list> 
					</beans:property>  
					 -->                                       
                </beans:bean>
            </util:list>
        </beans:property>
    </beans:bean>

但测试过程中发现一个有趣的问题,一个比较复杂的QuestionRecord类对象转乘Json没有问题,但一个非常简单的TestA类却遇到了如下异常:

org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.writeWithMessageConverters(AnnotationMethodHandlerAdapter.java:1050)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.handleResponseBody(AnnotationMethodHandlerAdapter.java:990)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter$ServletHandlerMethodInvoker.getModelAndView(AnnotationMethodHandlerAdapter.java:939)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod(AnnotationMethodHandlerAdapter.java:438)
at org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle(AnnotationMethodHandlerAdapter.java:424)


TestA类非常简单,就一个List成员变量

public class TestA {
	private List<String> items;

	public TestA()
	{
		items = new ArrayList<String>();
	}
	public void add(String t)
	{
		items.add(t);
	}
}

开始总以为是Content-Type或者Accept属性有问题,但找了半天原因才发现这里有个基本的要求:POJO对象要转成Json,则要求POJO中的属性必须都有getter方法,加上getter方法后就正常了 :)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值