我正在使用Spring 2.5(基于XML的配置)。在我的Spring控制器中,如何将字符串返回给我的AJAX请求? 我的ajax代码如下:
jq("#editAdTextSave").click(function() {
alert( "Handler for .click() called." );
jq.ajax({
url: 'bookingDetail.html',
type: 'POST',
data: 'action=updateAdText',
success: function(data) {
//called when successful
alert(model);
//$('#ajaxphp-results').html(data);
},
error: function(e) {
//called when there is an error
//console.log(e.message);
}
});
});
COntroller onSubmit需要一个ModelAndView对象返回值。但是我只需要返回一个字符串。我怎么能这样做。请建议。
答案 0 :(得分:0)
您需要在映射方法中使用@ResponseBody
。使用@ResponseBody
会将您返回的值写为HttpResponseBody
,并且不会将其评估为视图。这是一个快速演示:
@Controller
public class DemoController {
@RequestMapping(value="/getString",method = RequestMethod.POST)
@ResponseBody
public String getStringData() {
return "data";
}
}
答案 1 :(得分:0)
在问题中,使用 Spring 2.5 ; @ResponseBody
是在 Spring 3.0
@see ResponseBody JavaDocs in Latest Spring
回到问题。
在我的Spring控制器中,如何返回一个字符串......
根据Spring Blog Post的简单答案,您需要将OutputStream
作为参数添加到控制器方法中。
您基于XML的配置应该如下所示
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="your.controllers"/>
</beans>
你的控制器看起来应该是这样的
package your.controllers;
@Controller
public class YourController {
@RequestMapping(value = "/yourController")
protected void handleRequest(OutputStream outputStream) throws IOException {
outputStream.write(
"YOUR DESIRED STRING VALUE".getBytes()
);
}
}
最后,如果你想在没有任何注释的情况下这样做,那么;
您的基于XML的配置应该如下所示
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<bean name="/yourController" class="your.controllers.YourController"/>
</beans>
你的控制器看起来应该是这样的
package your.controllers;
public class YourController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
response.getOutputStream().write(("YOUR DESIRED STRING VALUE").getBytes());
return null;
}
}