2013-12-18 2 views
1

JS 파일에서 jquery 대화 상자에있는 버튼을 클릭하면 ajax 호출이 호출됩니다. Spring MVC Controller 메소드가 호출되어 db 항목 &이 객체를 생성하고 모델에 추가합니다. 대화 상자에서 spring : message에 대한 인수로 사용하는 것과 동일한 객체 속성이지만 모델에서 객체를 가져올 수 없습니다. 다른 방법이 있습니까? 참고 : 속성 파일에서만 메시지를 사용해야합니다.jquery 대화 상자에서 ajax 호출 완료 후 model 속성을 사용해야합니다.

JSP 파일

<html> 
    .. 
    <form:form> 
    form elements 
    <div id="dialog-form" class="dialogbox"> 
    <spring:message code="product.createsuccess" arguments="${message.prodCode}, ${message.customerName}, ${message.warehouseName}, ${message.status}"></spring:message> 
    textbox for entering id & done button code segment 
    </div> 
    </form:form> 
    </html> 

등록

product.createsuccess = Product {0} created successfully for Customer {1} at {2} in status {3}. 

컨트롤러는 자바 스크립트의

public @ResponseBody 
    String addWarehouseProduct(@PathVariable Long warehouseId, ModelMap model, Principal principal) { 
// db operation 
model.put("message", createdMessageObjectwithattributes); 
return null; 
} 

세그먼트 파일 파일을 파일

.. 
$("#dialog-form").dialog({ 
     autoOpen: false, 
     height: 330, 
     width: 540, 
     modal: true 
    }); 

    $('#done').click(function(){ 
      var warehouseId = null; 
      // warehouseid got from textbox code 
      if(warehouseId != null) { 
       var url = $('#contextPath').val() +"/"+ $('#mdmType').val()+ "/addWarehouseProduct/" + warehouseId + "/*.do"; 
       $.ajax({ 
        type: "POST", 
        url: url, 



        error: function(e) { 

         alert('Error: ' + e); 
        } 
       }); 
      } 
      return false; 
     }); 

.. 

답변

1

모델은보기를 반환 할 때만 사용됩니다.

public @ResponseBody String 

은 메서드가보기가 아닌 단순한 문자열을 클라이언트에 반환한다는 것을 의미합니다. @ResponseBody 주석을 주목하십시오.

return null; 

사실 아무 것도 반환하지 않습니다. 클라이언트는 빈 응답을 얻습니다.

<spring:message code="product.createsuccess" arguments="${message... 

은 페이지가 렌더링 될 때만 평가됩니다. 아약스 호출 후 변경되지 않습니다.

두 쉬운 솔루션은 내 마음에 와서 :

  • 은 서버에 메시지를 작성 자바 스크립트를 통해 대화 상자에 반환 삽입합니다.
  • 대화 상자 만 포함하는보기 (JSP)를 만들고이를 반환하고 반환 된 대화 상자를 현재 페이지에 삽입하십시오.
+0

메시지가 소품 파일에 있어야하므로 첫 번째 옵션은 구현할 수 없습니다. 두 번째 옵션을 구현하는 방법에 대해 자세히 설명 할 수 있습니까? 새 모델 속성 변경을 반영하기 위해 대화 상자를 다시로드 할 생각이었습니다.하지만 말했듯이 모델은보기가 반환 될 때만 사용할 수 있습니다. – Soheb

+0

대화 상자의 코드 만 들어있는 jsp를 만들고 일반 페이지처럼보기를 반환합니다. – zeroflagL

+0

답장을 보내 주셔서 감사합니다 @zeroflagL – Soheb