遇见,的gravatar头像
遇见, 2015-06-22 21:19:08

spring mvc如何实现不使用@ResponseBody注解接收前端ajax请求?

如题, 在controller中的一个方法  是ajax请求的方法  无返回值的方法 

如果不加@ResponseBody 会提示 xxxx.jsp找不到, 只有加了@ResponseBody springmvc才会认为这是一个ajax请求  而非需要跳转页面。  有没有什么办法不使用这个注解在springmvc中还可以使用ajax(在无返回值的方法中)

下面是视图解析配置:

<!-- freemarker 视图解析器 -->
		<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		  <property name="templateLoaderPath" value="/WEB-INF/ftl/pages"/>
		</bean>
		
		<!-- 
		
		  View resolvers can also be configured with ResourceBundles or XML files. If you need
		  different view resolving based on Locale, you have to use the resource bundle resolver.
		
		-->
		<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
		  <property name="cache" value="true"/>
		  <property name="prefix" value=""/>
		  <property name="suffix" value=".ftl"/>
		  <property name="contentType" value="text/html; charset=utf-8" />
		</bean>
		
		<!-- jsp视图解析器 -->
		<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<property name="prefix" value="/WEB-INF/jsp/"/>
			<property name="suffix" value=".jsp" />
		</bean>
所有回答列表(5)
最代码官方的gravatar头像
最代码官方  LV168 2015年6月22日

有2种方式。

1.在spring mvc的controller中设置http响应头content type类型为json格式

response.setContentType("application/json;charset=utf-8")

然后在response中输出json的字符串。此时的controller的方法可以不需要@ResponseBody注解返回json,可以是void

2.在spring mvc的view层设置响应头content type类型为json格式,比如jsp中的语法

<%@ page language="java" contentType="application/json; charset=UTF-8" pageEncoding="UTF-8"%>

然后在view中输出json的字符串。

其他view层技术大同小异,自己搜索下语法即可

评论(7) 最佳答案
凌云青草香的gravatar头像
凌云青草香  LV7 2015年6月22日

可以通过获取response对象,然后使用response.write()方法输出,不懂追I问

遇见,的gravatar头像
遇见,  LV36 2015年6月23日
//no cache
		response.setHeader("Cache-Control", "no-cache");
		response.setHeader("Expires", "0");
		response.setHeader("Pragma", "No-cache");

		try
		{
			byte[] bytes = anyString.getBytes(encoding);

			//fixed firefox3 未组织好的错误
			response.setContentType("text/plain");
//			response.setContentType("application/json;charset=utf-8");

			response.setContentLength(bytes.length);
			response.getOutputStream().write(bytes);
			
		}
		catch (Exception e)
		{
			e.printStackTrace();
		}

 

cvsFeng的gravatar头像
cvsFeng  LV21 2015年7月30日

@RepsonseBody 是基于Ognl表达式的,那么你在前台就需要用 '.属性' 如'member.name'的方式来访问,这样造成代码不易维护,改动一点代码,可能造成很难维护的后果所以不用,简单的单体对象可以用

240wo的gravatar头像
240wo  LV5 2015年8月19日

return null

顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友