Java 如何在spring mvc和tile中使用ajax
有没有办法在SpringMVC和ApacheTile中集成ajax。对我来说,当将请求发送到控制器并在发送回视图之后,数据不能通过tile config传递。Java 如何在spring mvc和tile中使用ajax,java,ajax,spring-mvc,tile,Java,Ajax,Spring Mvc,Tile,有没有办法在SpringMVC和ApacheTile中集成ajax。对我来说,当将请求发送到控制器并在发送回视图之后,数据不能通过tile config传递。 请帮帮我。谢谢我一直都这么做。我要做的是,返回ResponseEntity类型的对象,而不是返回“View”字符串或“ModelAndView”对象 例如,在控制器类中,您可以有如下方法: @RequestMapping(value="/cache/clear", method = RequestMethod.GET) public Re
请帮帮我。谢谢我一直都这么做。我要做的是,返回ResponseEntity类型的对象,而不是返回“View”字符串或“ModelAndView”对象 例如,在控制器类中,您可以有如下方法:
@RequestMapping(value="/cache/clear", method = RequestMethod.GET)
public ResponseEntity<String> clearAllCaches() {
Map<String, Object> results = new HashMap<String, Object>();
long startTimestamp = System.currentTimeMillis();
for (CachingService cachingService : cachingServices) {
LOGGER.info("Clearing caches in " + cachingService.getClass().getSimpleName());
cachingService.clearCache();
}
long finishTimestamp = System.currentTimeMillis();
long executionTime = finishTimestamp - startTimestamp;
LOGGER.warn("Finished clearing caches in " + cachingServices.size() + " services in " + executionTime + " ms.");
results.put("executionTime", executionTime);
results.put("serviceCount", cachingServices.size());
results.put(ServiceConstants.RETURN_KEY_SUCCESS, Boolean.TRUE);
return createResponse(results, HttpStatus.CREATED);
}
protected ResponseEntity<String> createResponse(Map <String, Object> results, HttpStatus successCode) {
JSONSerializer serializer = new JSONSerializer();
String responseBody = serializer.deepSerialize(results);
HttpStatus status = successCode;
boolean success = results.containsKey(ServiceConstants.RETURN_KEY_SUCCESS)
? (Boolean)results.get(ServiceConstants.RETURN_KEY_SUCCESS)
: false;
if (!success) {
status = HttpStatus.BAD_REQUEST;
}
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setContentLength(responseBody.length());
headers.add("Access-Control-Allow-Origin", "*");
return new ResponseEntity<String>(responseBody, headers, status);
}
@RequestMapping(value=“/cache/clear”,method=RequestMethod.GET)
公共响应清除所有缓存(){
映射结果=新的HashMap();
long startTimestamp=System.currentTimeMillis();
for(CachingService CachingService:cachingServices){
info(“清除“+cachingService.getClass().getSimpleName()中的缓存”);
cachingService.clearCache();
}
long finishTimestamp=System.currentTimeMillis();
long executionTime=完成时间戳-开始时间戳;
LOGGER.warn(“已完成清除“+cachingServices.size()+”服务中的缓存,“+executionTime+”ms.”;
结果。put(“执行时间”,执行时间);
results.put(“serviceCount”,cachingServices.size());
results.put(ServiceConstants.RETURN\u KEY\u SUCCESS,Boolean.TRUE);
返回createResponse(结果,HttpStatus.CREATED);
}
受保护的响应Entity CreateSponse(映射结果、HttpStatus成功代码){
JSONSerializer serializer=新的JSONSerializer();
String responseBody=serializer.deepSerialize(结果);
HttpStatus状态=成功代码;
布尔成功=results.containsKey(ServiceConstants.RETURN\u KEY\u success)
?(布尔)results.get(ServiceConstants.RETURN\u KEY\u SUCCESS)
:假;
如果(!成功){
status=HttpStatus.BAD_请求;
}
HttpHeaders=新的HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.setContentLength(responseBy.length());
headers.add(“访问控制允许原点”、“*”);
返回新的ResponseEntity(responseBody、Header、status);
}
注意,我使用FlexJSON就像使用SpringRoo一样。您也可以手动调用Jackson。我通过注释@ResponseBody将字符串发送回ajax页面来解决问题
public @ResponseBody
String test() {
List<User> users = userDetailsService.test();
for (User user : users) {
System.out.println(user);
}
return "1";
}
public@ResponseBody
字符串测试(){
List users=userDetailsService.test();
for(用户:用户){
System.out.println(用户);
}
返回“1”;
}