Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在spring mvc和tile中使用ajax_Java_Ajax_Spring Mvc_Tile - Fatal编程技术网

Java 如何在spring mvc和tile中使用ajax

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

有没有办法在SpringMVC和ApacheTile中集成ajax。对我来说,当将请求发送到控制器并在发送回视图之后,数据不能通过tile config传递。
请帮帮我。谢谢

我一直都这么做。我要做的是,返回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”;
}