2013-04-16 3 views
0

: ItemDao IMPL에오류 상태 : '잘못된 요청' 오류 코드 : ItemController의 400

@RequestMapping(value="/delete.htm", produces="application/json", method=RequestMethod.POST) 
public @ResponseBody Item deleteItem(
      @RequestParam String itemName) { 

    Item existingItem = new Item(); 
    existingItem.setItemName(itemName); 
    itemService.deleteItem(existingItem); 
    return existingItem; 
} 

: 항목 ServiceImpl에서는에

@Override 
public void deleteItem(Item item) { 
    // TODO Auto-generated method stub 
    sessionFactory.getCurrentSession().delete(item); 
} 

:

:

@Transactional 
public void deleteItem(Item item) { 
    // TODO Auto-generated method stub 
    itemDao.deleteItem(item); 
} 

JQuery와 그리드에 내가 삭제 기능을 사용하고 있습니다

function deleteRow(obj, args) { 
    // Get the currently selected row 
    var row = $('#grid').jqGrid('getGridParam','selrow'); 

    // A pop-up dialog will appear to confirm the selected action 
    if (row != null) { 
     $('#grid').jqGrid('delGridRow', row, { 
      url: 'delete.htm', 
      recreateForm: true, 
      beforeShowForm: function (form) { 
       //Change title 
       $(".delmsg").replaceWith('<span style="white-space: pre;">' + 
            'Delete selected record?' + '</span>'); 
       //hide arrows 
       $('#pData').hide(); 
       $('#nData').hide(); 
      }, 
      reloadAfterSubmit: true, 
      closeAfterDelete: true, 
      serializeDelData: function (postdata) { 
       var rowdata = $('#grid').getRowData(postdata.id); 
       // append postdata with any information 
       return { 
        id: postdata.id, 
        oper: postdata.oper, 
        username: rowdata.username 
       }; 
      }, 
      afterSubmit: function (response, postdata) { 
       var result = eval('(' + response.responseText + ')'); 
       var errors = ""; 

       if (result.success == false) { 
        for (var i = 0; i < result.message.length; i++) { 
         errors += result.message[i] + "<br/>"; 
        } 
       } else { 
        $('#msgbox').text('Entry has been deleted successfully'); 
        $('#msgbox').dialog({ 
         title: 'Success', 
         modal: true, 
         buttons: { 
          "Ok": function() { 
           $(this).dialog("close"); 
          } 
         } 
        }); 
       } 
       // only used for adding new records 
       var newId = null; 

       return [result.success, errors, newId]; 
      } 
     }); 
    } else { 
     $('#msgbox').text('You must select a record first!'); 
     $('#msgbox').dialog({ 
      title: 'Error', 
      modal: true, 
      buttons: { 
       "Ok": function() { 
        $(this).dialog("close"); 
       } 
      } 
     }); 
    } 
} 

아래 오류가 발생합니다 : 오류 상태 : '잘못된 요청'. 오류 코드 : 400 선택한 레코드를 삭제 하시겠습니까? 어디 컨트롤러 또는 jq 표에서 오류가 점점? 친절하게도

답변

-1

HTTP-Response Code 400 상태가 사용자 요청에 이상이 있음을 제안합니다. 웹 서비스 호출이 올바른지 (경로, 매개 변수 등) 확인하십시오.

또한 클라이언트 측에서 잘못하고있는 것을 설명하기 위해 서버 로그 파일을 살펴볼 수도 있습니다. Spring-mvc는 응답 코드 400을 많은 예외 (here)로 매핑합니다. 예외를 분석하면 요청한 내용을 이해할 수 있습니다.

+0

의 nothign 그는 서비스 기호와, 즉 500 오류를 DBE woul 할 수 있습니다. – NimChimpsky

+0

오류 자체가 서버 측에 있음을 의미하지는 않습니다. 나쁜 요청은 클라이언트의 잘못이라는 것을 알고 있습니다. 내가 말하고자하는 것은 에러가 서버에 의해 되돌려지고 그의 로그 파일을 분석함으로써 그가 클라이언트 측에서 잘못하고있는 것을 발견 할 수 있다는 것입니다 (즉, 존재하지 않는 엔티티를 삭제하려고한다면). – benjiman

+0

존재하지 않는 엔티티를 삭제하려고 시도하면 400 오류가 발생하지 않습니다. – NimChimpsky

0

That means 컨트롤러를 ajax jquery 호출 (?)과 올바르게 매핑하지 않았습니다.

내가있는 jqGrid에 익숙하지 오전하지만 당신이 포스트을 수행하고 요청 매개 변수가 올바르게 정의되어 있습니다 확인하십시오.

(당신이 사용하는 논리와 명명 규칙이 BTW 혼란 진드기 있습니다.)

관련 문제