spring支持text/html json

本文介绍了如何在Spring MVC中使用ContentNegotiatingViewResolver进行视图解析,并通过整合Tiles2框架实现多视图解析。同时,展示了如何配置JSON视图返回以及解决类中包含集合时的json错误问题。并通过示例代码说明了如何正确地进行配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
        <property name="contentNegotiationManager" ref="cnManager"/>  
        
        <property name="viewResolvers">
        <list>
        <!-- Default viewClass: JSTL view (JSP with html output) 
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
 
       <property name="prefix" value="/WEB-INF/jsp/"/>
       <property name="suffix" value=".jsp"/>
   </bean>
   -->
<bean class="org.springframework.web.servlet.view.UrlBasedViewResolver" id="tilesViewResolver">
   <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView"/>
</bean>
   <!-- Used here for 'xml' and 'atom' views  -->
   <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"/>
        </list>
        </property>
        <property name="defaultViews">
   <list>
     <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" />
   </list>
</property>
    </bean>


    <bean class="org.springframework.web.servlet.view.tiles2.TilesConfigurer" id="tilesConfigurer">
    <property name="definitions">
      <list>
        <value>/WEB-INF/layouts/layouts.xml</value>
        <!-- Scan views directory for Tiles configurations -->
        <value>/WEB-INF/views/**/views.xml</value>
      </list>
    </property>
  </bean>


<bean id="cnManager" class="org.springframework.web.accept.ContentNegotiationManagerFactoryBean">

        <property name="favorPathExtension" value="true"/>
        <property name="ignoreAcceptHeader" value="false"/>
        <property name="defaultContentType" value="text/html"/>
        
        <property name="mediaTypes">
            <map>
                <entry key="html" value="text/html" />
                <entry key="json" value="application/json"/>
            </map>
        </property>

    </bean>


加上jar包 :

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.1.0</version>
</dependency>

当类中含有类的时候,json会出错:

org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.domain.User.articles, could not initialize proxy - no Session
需要将User中的Article忽略json:

@JsonIgnore

private Article article;


@Controller

@RequestMapping(value="trash/{id}")
public String trash(HttpServletRequest request, HttpServletResponse resposne, ModelMap modelMap,@PathVariable("id") Integer id, Article article){
articleService.trashArticleById(id);
return null;
}

json返回null视图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值