2013-05-23 5 views
1

Spring 및 Hibernate를 사용하여 한 번에 여러 레코드를 내 데이터베이스 (sql-developer)에 저장/업데이트하려고합니다. 내 컨트롤러를 통해, DAO로, DAO로, AHAX 호출을 통해 내 데이터를 전달하고 Hao 객체 목록을 반복하고 db에 있는지 여부를 결정한 다음 새 레코드 또는 업데이트를 저장합니다. 현재 기록. 일단이 루프 (성공적으로 보이는 것)를 통과하면 페이지에 403 오류 및 경고가 표시됩니다. Eclipse의 스택 추적에 오류가 없습니다. 나는 403 오류를 받고 있어요 왜 알아 내기 위해 노력했습니다403 데이터베이스에 저장하려고 할 때 금지됨

@RequestMapping(value = "/saveLimXrefHvo.do", method = RequestMethod.PUT, 
consumes="application/json") 

public void saveLimXrefHvo(@JsonParam(innerType=LimitXrefHvo.class) 
List<LimitXrefHvo> limitXrefHvoList) throws JsonParseException, 
JsonMappingException, IOException { 

limitService.saveLimXrefHvo(limitXrefHvoList); 
} 

: 여기

내 컨트롤러 방법이다

function saveLimXrefHvo(){ 

var list = []; 

//declare variables for the data pieces 
$('#limAssigned li').each(function (index, li) { 
var cdeBusUnit = $('select[name="cde_bus_unit"]').val(); 
var cdeRatingPlan = $('select[name="cde_rating_plan"]').val(); 
var cdeLimit = $(this).attr('id'); 
var txtLimitRptOcc = $('#textOcc').val(); 
var txtLimitRptCm = $('#textCM').val(); 
var uidMod = $('#saveRTnumberLimXref').val(); 
var numSortOrder = (index + 1); 

//put the variables in the JSON object 
var JSONObject = { 
     "cdeBusUnit" : cdeBusUnit, 
     "cdeRatingPlan" : cdeRatingPlan, 
     "cdeLimit" : cdeLimit, 
     "txtLimitRptOcc" : txtLimitRptOcc, 
     "txtLimitRptCm" : txtLimitRptCm, 
     "uidMod" : uidMod, 
     "numSortOrder" : numSortOrder 
}; 

list.push(JSONObject); 

}); 
var dat = JSON.stringify(list); 

$.ajax({ 
    type : 'PUT', 
    url : 'saveLimXrefHvo.do', 
    contentType : 'application/json', 
    data : dat, 
    success : function(){ 
     alert("This record has been successfully saved."); 
    } 
});//end ajax 

} : 다음

내 자바 스크립트입니다 오늘 아침. 나는 별도의 삭제 및 분리 내 루프의 "다른"부분에 별도의 DAO 방법을 변경 시도하고 그 작동하지 않았다. 누군가는 컨트롤러 메소드에 "소비"를 추가 할 것을 제안했습니다. 그것도 작동하지 않았다. 나는 제안, 생각, 질문에 열려 있습니다. 미리 감사드립니다!

답변

1

스프링 컨트롤러가 응답을 처리하는 방법 (예 : void)을 알고 있습니까?

성공적인 작업을 나타내는 JSON 객체를 반환하십시오. 같은 보일 수 있습니다

{ 
    "success": true, 
    "message": "Successfully saved... blah blah" 
} 

구현 : 예

보기 중

*이

@RequestMapping(value = "/saveLimXrefHvo.do", method = RequestMethod.PUT, consumes="application/json", produces="application/json") 
public ResponseMap saveLimXrefHvo(@JsonParam(innerType=LimitXrefHvo.class) List<LimitXrefHvo> limitXrefHvoList) throws JsonParseException, JsonMappingException, IOException { 

    limitService.saveLimXrefHvo(limitXrefHvoList); 

    return new ResponseMap("Success"); 
} 
+0

예 (I 추가는 = "응용 프로그램/JSON"생산). 그것이 바로 그 것이었다. 내 js dataType 응용 프로그램/json을 추가하고 다음과 같이 응답 맵을 만들었습니다. \t \t ResponseMap responseMap = new ResponseMap(); \t \t responseMap.put ("success", true); \t \t responseMap.put ("message", "이 레코드가 성공적으로 저장되었습니다."); –

+0

실제로 이것은 더 좋습니다 : return new ResponseMap ("이 레코드는 성공적으로 저장되었습니다."); –

+1

응답 본문이 필요하지 않은 경우 해당 메서드에 @ResponseStatus (HttpStatus.NO_CONTENT) 주석을 달아 주면 성공을 나타내는 HTTP 204를 반환하지만 본문은 표시되지 않습니다. – Jukka