我有一个多操作控制器来处理所有相关的请求。我创建了一个处理ajax请求的方法,该方法应该返回一个字符串值作为响应。这个spring应用程序不是“mvc:annotation-driven”。
具有处理ajax调用的方法的控制器:
public class UserController extends MultiActionController {
private UserDelegate userDelegate;
public void setUserDelegate(UserDelegate userDelegate) {
this.userDelegate = userDelegate;
}
public String AjaxExample(HttpServletRequest request, HttpServletResponse response, HttpSession session) {
String ip = request.getParameter("ip"));
String sysName = userDelegate.getSysName(ip);
return sysName;
}
//Several methods to handle other requests ...
}
使用jquery我能够成功调用上面的'AjaxExample'方法。 jquery函数如下所示:
function callAjax() {
var ip = $('#ip').val();
$.ajax(
{
type: "POST",
url: "AjaxExample.do",
data: "ip=" + ip,
success: function(response) {
alert(response);
},
error: function(e) {
alert('Error: ' + e);
}
}
);
}
我面临的问题是如何在不使用@ResponseBody注释的情况下返回String?
我是否可以在这一种方法上使用注释?
说实话,我实际上是通过在我的应用程序配置文件中设置<mvc:annotation-driven/>
标记并使用@ResponseBody注释'AjaxExample'方法来尝试的。这没用,春天仍然认为字符串是一个未解决的视图。
我从来没有使用注释配置弹簧,我对它的理解是有限的。 @ResponseBody注释不起作用,因为我没有使用@Controller注释我的控制器,因为我没有使用@Request注释该方法?但我在我的应用程序配置文件中有一个bean定义,控制器中的其余方法工作正常。
请忍受我的无知并告诉我如何让这个方法将字符串返回给我的ajax调用?
答案 0 :(得分:2)
将返回类型更改为void,然后将响应直接写入HttpServletResponse
。
public void AjaxExample(HttpServletRequest request, HttpServletResponse response, HttpSession session) { String ip = request.getParameter("ip")); String sysName; PrintStream printStream = new PrintStream(out); try { out.print(sysName); } catch (IOException e) {} }