2014-02-10 1 views
0

Есть ли какой-либо способ интегрировать ajax в весенний mvc и apache плитки. Для меня при отправке запроса на контроллер и после этого отправьте обратно на просмотр, данные не могут проходить через конфигурацию плитки. Помогите мне пожалуйста. СпасибоКак ajax весной mvc и плитка

ответ

0

Я делаю это все время. То, что я делаю, вместо того, чтобы отправлять обратно строку «Вид» или объект «ModelAndView», возвращает объект типа ResponseEntity.

Например, в классе контроллера, вы можете иметь метод, как:

@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); 
} 

Обратите внимание, что я использую FlexJSON, как я использую Spring Roo. Вы также можете вручную вызвать Джексона.

0

Я решаю свою проблему по аннотации @ResponseBody, чтобы отправить строку обратно на страницу ajax.

public @ResponseBody 
String test() { 
    List<User> users = userDetailsService.test(); 
    for (User user : users) { 
     System.out.println(user); 
    } 
    return "1"; 
}