要上下文化:
我正在尝试使用AJAX
$.ajax({
url : urlN, // <<- "/log"
type: "post",
success : function(json) {
console.log(json);
document.getElementById('content').innerHTML = json;
}
setInterval(refreshDiv, 5000);
在每次“ X”次更新HTML页面(<div>
)的仅一部分。问题是我无法获取文件的内容,因为我的控制器返回了我的视图名称,结果是:
经过几次尝试,我发现我无法传递视图名称,但是无法传递我想要访问的文件对象。在建议下,我添加了@ResponseBody表示法,以便自动为响应客户端而编写方法返回。但是,通过这样做,我最终“失去了”我的视图,唯一显示的返回内容就是内容本身,感觉到我不能有两个具有相同URL的控制器。就是说,我的问题被扭转了。
我想做的是,将这两个出口合而为一,例如:
@RequestMapping(value = "/log", method = RequestMethod.POST)
@ResponseBody
//String - View
public Log jsonLogContent(@Valid Log log, BindingResult bindingResult, Map<String, Object> model) {
if (log.getInitLine() == 0 && log.getFinalLine() == 0) {
try {
fileNumberLines(log);
log.setPathFile(logsDir + "/" + log.getFilename());
log.setContent(getLogContentByRange(0, log.getInitLine(), log.getFinalLine(), log.getPathFile()));
} catch (IOException e) {
logger.error(e.getMessage());
}
} else {
log.setContent(getLogContentByRange(0, log.getInitLine(), log.getFinalLine(), logsDir + "/" + log.getFilename()));
}
// view
model.put("path", logsDir);
model.put("log", log);
model.put("currentPage", "logs");
model.put("root", root);
//return "log"; - View
return log; // Obj
}
所以,我的问题是:
我该怎么做?我如何先加载视图,然后再将对象加载到其中?我之所以这么问,是因为无论我做什么,显示的唯一内容就是@ResponseBody表示法,就是文件的内容。