您好,匿名用户
随意问技术百科期待您的加入

spring mvc 怎么同时配置 /a/{b} 和 /a/{b}.{c} 这两个 RequestMapping

0 投票

spring mvc 有这两个映射

@RequestMapping(value="/users/{id}")
public String renderUser(@PathVariable("id") int id){
    //do something
}
@RequestMapping(value="/users/{id}.{format}")
public String renderUserOf(@PathVariable("id") int id,@PathVariable("format") String format){
    //do something
}

第一个 "/users/{id}" 能够正常处理
但是第二个 /users/{id}.{format} 却不能正常解析

比如 /users/7 会被映射为 "/users/{id}" ,
但 /users/7.json 却也被映射为了 "/users/{id}"

应该怎么处理这两个映射呢?

用户头像 提问 2012年 12月1日 @ Lulu 上等兵 (293 威望)
分享到:

1个回答

0 投票

Spring根据后缀来决定编组格式.
如果你想返回json.

<bean class="org.springframework.web.servlet.view.ContentNegotiatingViewResolver">
                <!-- 设置为false开启对Accept Header的支持-->
                <property name="ignoreAcceptHeader" value="false"/>
                <!-- 在没有扩展名时的默认形式 -->
                 <property name="defaultContentType" value="application/xml"/>        
       
        <property name="mediaTypes">
            <map>
                <entry key="json" value="application/json" />
                <entry key="xml" value="application/xml" />
                <entry key="jsp" value="text/html"/>
                <entry key="do" value="text/html"/>
            </map>
        </property>
        <property name="viewResolvers">
            <list>          
                <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
                    <property name="viewClass" value="org.springframework.web.servlet.view.InternalResourceView"/>
                    <property name="prefix" value="/WEB-INF/jsp/"></property>              
                </bean>
                <bean class="org.springframework.web.servlet.view.BeanNameViewResolver" />
             
            </list>
        </property>
        <property name="defaultViews">
            <list>            
                <!-- for application/xml -->           
                <bean class="org.springframework.web.servlet.view.xml.MarshallingView" >
                    <property name="marshaller">
                        <ref bean="castorMarshaller"/>
                    </property>
                </bean> 
                <!-- for application/json -->  
                <bean class="org.springframework.web.servlet.view.json.MappingJacksonJsonView" />                
            </list>
        </property>
    </bean>

请求id.xml就得到xml格式的,请求id.json就是json格式的~没有后缀名会根据Accept类型.

用户头像 回复 2012年 12月1日 @ Saber 中士 (1,234 威望)
提一个问题:

相关问题

+1 投票
1 回复 49 阅读
0 投票
1 回复 55 阅读
用户头像 提问 2013年 11月7日 @ Tristana 上等兵 (285 威望)
+3 投票
2 回复 78 阅读
用户头像 提问 2012年 12月31日 @ Usopp 上等兵 (128 威望)
0 投票
1 回复 42 阅读
用户头像 提问 2012年 12月1日 @ Hera 上等兵 (249 威望)
0 投票
0 回复 20 阅读

欢迎来到随意问技术百科, 这是一个面向专业开发者的IT问答网站,提供途径助开发者查找IT技术方案,解决程序bug和网站运维难题等。
温馨提示:本网站禁止用户发布与IT技术无关的、粗浅的、毫无意义的或者违法国家法规的等不合理内容,谢谢支持。

欢迎访问随意问技术百科,为了给您提供更好的服务,请及时反馈您的意见。
...