spring mvc映射为html后,返回json的奇怪问题

踏雪听雨 2015-10-22 06:36:44
映射为do后缀,返回json到前台,正常。

<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>


映射为html后缀,返回json到前台,报500错误(程序什么都没有改,就改了RequestMapping的映射名

<servlet-mapping>
<servlet-name>spring</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>



方法如下,只改其中的login.do为login.html,什么配置都没有改,ajax调用这个url就不正确了,报http500 error:

@RequestMapping(value = "login.do", method = RequestMethod.POST)
public @ResponseBody Map<String, Object> login(HttpServletRequest request, HttpServletResponse response) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("msg", user);

return map;
}
...全文
278 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
踏雪听雨 2015-10-28
  • 打赏
  • 举报
回复
可有解吗?请高人指点
踏雪听雨 2015-10-28
  • 打赏
  • 举报
回复
引用 8 楼 JAVA_LiuTe 的回复:
就添加了一个后缀路径映射,就报错了 ?还添加了一个后缀路径映射,但是没有在controller中添加login.html映射路径,在路劲里输入longin.html报错 ?
就是映射为html后出现的,login.html,不返回json可以访问,但返回json数据,就有问题了
  • 打赏
  • 举报
回复
引用 8 楼 JAVA_LiuTe 的回复:
就添加了一个后缀路径映射,就报错了 ?还添加了一个后缀路径映射,但是没有在controller中添加login.html映射路径,在路劲里输入longin.html报错 ?
若是第二种情况,在controller中添加一个login.html的地址映射。
  • 打赏
  • 举报
回复
就添加了一个后缀路径映射,就报错了 ?还添加了一个后缀路径映射,但是没有在controller中添加login.html映射路径,在路劲里输入longin.html报错 ?
踏雪听雨 2015-10-23
  • 打赏
  • 举报
回复
引用 4 楼 like987654 的回复:
[quote=引用 3 楼 SaRoot 的回复:] 通过映射后,能通过.html访问页面,但就是返回json格式时,会报错。
你返回到前台的json格式是String类型还是对象类型的,如果是对象你可以转成String类型试试。[/quote]

@RequestMapping(value = "login.do", method = RequestMethod.POST)
    public @ResponseBody Map<String, Object> login(HttpServletRequest request, HttpServletResponse response) {
         Map<String, Object> map = new HashMap<String, Object>();
         map.put("msg", user);
 
        return map;
    }
踏雪听雨 2015-10-23
  • 打赏
  • 举报
回复
比如: test.html返回json报错 test.do返回json正常
like987654 2015-10-23
  • 打赏
  • 举报
回复
引用 3 楼 SaRoot 的回复:
通过映射后,能通过.html访问页面,但就是返回json格式时,会报错。
你返回到前台的json格式是String类型还是对象类型的,如果是对象你可以转成String类型试试。
踏雪听雨 2015-10-23
  • 打赏
  • 举报
回复
通过映射后,能通过.html访问页面,但就是返回json格式时,会报错。
踏雪听雨 2015-10-23
  • 打赏
  • 举报
回复
引用 1 楼 like987654 的回复:
修改完RequestMapping的映射名后 web.xml 里面的<servlet-mapping>修改没有呢,哪儿也需要修改。
有的,如下:

<servlet-mapping>
		<servlet-name>spring</servlet-name>
		<url-pattern>*.html</url-pattern>
	</servlet-mapping>

<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">  
	    <property name="viewClass" value="panzi.phobos.core.util.MyFreeMarkerView"/>  
	    <property name="contentType" value="text/html; charset=utf-8"/>
	    <property name="prefix" value=""/>
	    <property name="suffix" value=".ftl" />
	    <!-- 如果有多种解析器,添加下面这行,让freemarker解析器优先 -->  
	    <property name="order" value="0" />  
	</bean>
	
like987654 2015-10-22
  • 打赏
  • 举报
回复
修改完RequestMapping的映射名后 web.xml 里面的<servlet-mapping>修改没有呢,哪儿也需要修改。

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧