2014-07-13 2 views
1

일반적으로 HTML 코드를 동적으로 추가해야하는 경우 JQuery로보기에서로드하고 싶습니다. 그런 다음 @ResponseBody를 사용하여 컨트롤러에서 ModelAndView를 렌더링합니다. Javascript의 정적 HTML은 읽을 수 없으며 재사용 할 수 없습니다.이제 Ajax 호출을 만들 때 컨트롤러에서 일부 값을 확인한 다음 일부 값으로 맵을 렌더링하거나 DOM에 추가 할 html 코드를 렌더링해야합니다. 그래서 ModelAndView가 어떻게 작동하는지 생각해 보았습니다. viewManagement에서 처리 할보기를 추가 할 수 있지만 그 데이터를 추가하기로 결정한 경우 렌더링 만하는 방법이 있습니다. 그래서이보기ModelAndView에 html 코드를 속성으로 추가하십시오.

 success:function(data) 
      if(data.status=="2") $("#rowErrorsTable tbody tr:last").after(data.rowErros); 

감사에서 다음

Map<String, Object> map = new HashMap<> 
    map.add("status", "1") 

값과 다른 시나리오에

 Map<String, Object> map = new HashMap<> 
     map.add("status", "2") 
     map.add("rowErros", "WEB-INF/row_errors.jsp") 

와 함께 내가지도를하고 싶은 것을 상상한다.

답변

0

클라이언트 측 코드에 마크 업을 포함시키는 것이 본질적으로 읽기 쉽지 않거나 재사용 할 수 있다는 것에 동의하지 않지만이 유스 케이스에 대해 ModelAndView를 사용하는 이유는 무엇인지에 관계없이 동의하지 않습니다. 멀리

success: doSuccess, 
error: function() { $('#error').load('/error.jsp'); } // Optionally sniff for the incoming status code 

이 오류의 경우를 가정하면

@Request(value="/foo") 
public ResponseEntity<String> foo() { 
    if (conditionIsMet()) { 
     return new ResponseEntity<String>("", HttpStatus.OK); // Or some simple JSON string 
    } else { 
     return new ResponseEntity<String>(HttpStatus.BAD_REQUEST); 
    } 
} 

그리고 프론트 엔드에 : 당신은, 당신의 컨트롤러 메소드에서 적절한 HTTP 응답 코드를 반환하여 성공 및 오류 콜백을 사용하여 프론트 엔드에이를 수 적은 당신의 성공 케이스보다 더 자주, 당신은 또한 위치 :

  1. 사용자 각각의 paylo으로 error.jsp의 마크 업을 전송과 관련된 대역폭을 절약 광고; 정리하고 당신이 당신의 오류 페이로드에 추가 정보가 필요한 경우 API

을 정상화

  • HTTP 상태 코드를 HTTP 요청에 대한 적절한 응답을 사용하여은을 통해 오류에 대한 프론트 엔드 정보를 제공하는 JSON 객체를 고려 HTTP 상태 코드 자체가 제공하는 것 이상. 이것은 많은 경우에 반드시 필요한 것은 아니지만 들어오는 요청 요소로 인해 요청이 실패하게 된 것을 표면화하려는 상황에서는 유용 할 수 있습니다.

  • +0

    아니요. 이해하지 못합니다. 모든 시나리오에서 HTML 코드를 보내지 않습니다. 오류가있는 경우에만 오류 테이블에 추가 할 행 목록을 다시 보내야합니다. 그리고 정확하게 리디렉션을 원하지 않습니다. 왜냐하면 정보를 저장하려고 할 때, 얼마나 많은 행을 삽입 할 수 없는지를 알고 나서 DOM에 추가 할보기로 다시 보냅니다. 이러한 오류를 다시 검사해야 할 경우 작업을 다시 반복해야하므로 매우 비효율적이라고 생각합니다. – paul

    관련 문제