永发信息网

springmvc contentnegotiationmanager是干什么

答案:1  悬赏:30  手机版
解决时间 2021-03-03 03:17
springmvc contentnegotiationmanager是干什么
最佳答案
我使用SpringMVC中ContentNegotiationManager根据请求不同,返回不同的view

<bean id="contentNegotiationManager"
class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">
<property name="favorPathExtension" value="true" />
<property name="favorParameter" value="true" />
<property name="parameterName" value="format" />
<property name="ignoreAcceptHeader" value="false" />
<property name="defaultContentType" value="text/html" />
<property name="mediaTypes">
<value>
json=application/json
xml=application/xml
html=text/html
</value>
</property>
</bean>

<bean
class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver"
p:order="0">
<property name="contentNegotiationManager" ref="contentNegotiationManager" />
<property name="defaultViews">
<list>
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
</list>
</property>
</bean>

<bean id="defaultViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:order="1">
<property name="viewClass"
value="org.springframework.web.servlet.view.JstlView" />
<property name="contentType" value="text/html" />
<property name="prefix" value="/WEB-INF/page/" />
<property name="suffix" value=".jsp" />
</bean>
通常情况下请求controller,会用defaultViewResolver返回JstlView,即jsp视图。

当请求head中包含Accept=application/json的时候,ContentNegotiatingViewResolver就会起作用,返回MappingJackson2JsonView将model包装成json,output到前端。这里我继承了MappingJackson2JsonView,并且重新包装了下返回的json变成了我指定的格式用于前端解析

{
"code": 0, // 错误码
"message": "success", //错误信息
"content": {} // 真正的model
}
上面的流程都很顺利。

目前遇到一个问题,如果请求JSON,一旦Controller中出现异常,就默认返回500页面。有没有一个类似于ContentNegotiatingViewResolver的Resolver,捕获到我自定义的异常(new UserNotFoundException("用户已经存在")),然后包装成json格式返回?

{
"code": 100001, // 错误码
"message": "用户已经存在", //错误信息
"content": {} // 真正的model
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
帮我取个 笔名,唯美,伤感一点的。
浙东小九寨售票处地址有知道的么?有点事想过
韩启德是什么级别的
和一个女孩子出去玩,我是个内向的人和她出去
秀洲花园二区北门(人行门)怎么去啊,有知道地
e百分教育教学质量怎么样?
比较√5/12+√1/5与√1/3+√2
怎样才能改正小学生学习不认真的习惯?怎样才
洪湖府场孟记家电这个地址在什么地方,我要处
女人为什么从不联系和自己特别熟亲密的男人反
周伟五金工具地址在什么地方,想过去办事
|监控录像机连接笔记本电脑的线叫什么线
私人公我自己修的路可以阻止别人通行
脱她裤子时候她不给脱,等我用力脱下来的时候
韩国的花样男子花了多少钱拍摄啊?
推荐资讯
在赤道上 重力与万有引力有什么关系,它们各自
山东浩港科技有限公司地址在哪,我要去那里办
坐往上海的飞机可不可以玩手机
杨树木树粉有啥用途
金沙寺街48号院怎么去啊,有知道地址的么
想写一手帅气的钢笔字,选择什么类型的字体字
带婷字和桑字的对联
招远市工商行政管理局蚕庄工商所在哪里啊,我
乐磊广告地址在什么地方,想过去办事
摇滚乐队中,各个乐手的职责(鼓,吉他,键盘
西安哪个区的设计院最多呀?大概有多少?
马上要高考,而我语文才考四五十分,我还有救
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?