복붙노트

[SPRING] 어떻게 자바 스크립트 파일에서 봄 MVC 모델 개체에 액세스 할 수 있습니까?

SPRING

어떻게 자바 스크립트 파일에서 봄 MVC 모델 개체에 액세스 할 수 있습니까?

나는 봄 3 MVC를 사용하고 있으며 수업은 아래에있다.

외부 시스템은 아래 URL을 사용하여 내 응용 프로그램을 호출합니다.

http://somehost/root/param1/param2/param3

아래 봄 MVC 컨트롤러 메서드가 있습니다 :

public ModelAndView showPage(@PathVariable("param1") String paramOne, @PathVariable("param2") String paramTwo, @PathVariable("param3") String paramThree, HttpServletResponse response) {  
        SomeModel model = new SomeModel(paramOne, paramTwo, paramThree);
       return new ModelAndView("SomeJsp", "model", model);
    } 
public class SomeModel{
 private String paramOne;
 private String paramTwo;
 private String paramThree;
//constructor
 //setters and getters

}
//In this Jsp i have a div with few elements. Div is not visible by default.
//This jsp has externalJavascript included.
//I enable div and set the data into div elements using jquery.
<script src="<c:url value="/resources/js/extjs.js" />" type="text/javascript"></script>
$(document).ready(function() {

    //Here i need the model returned using ModelAndView
//I can get data from model and set into div elements.


});

외부 자바 스크립트 파일에서 모델 컨텐츠를 가져올 수 있습니까? 가능하면 어떻게 할 수 있습니까?

감사!

해결법

  1. ==============================

    1.JavaScript는 클라이언트 측에서 실행됩니다. 모델은 클라이언트 측에 존재하지 않으며 .jsp를 렌더링하는 동안 서버 측에만 존재합니다.

    JavaScript는 클라이언트 측에서 실행됩니다. 모델은 클라이언트 측에 존재하지 않으며 .jsp를 렌더링하는 동안 서버 측에만 존재합니다.

    모델의 데이터를 클라이언트 측 코드 (예 : 자바 스크립트)에서 사용할 수있게하려면 렌더링 된 페이지의 어딘가에 저장해야합니다. 예를 들어 Jsp를 사용하여 JavaScript 변수를 모델에 할당하는 JavaScript를 작성할 수 있습니다.

    최신 정보:

    간단한 예

    <%-- SomeJsp.jsp --%>
    <script>var paramOne =<c:out value="${paramOne}"/></script>
    
  2. ==============================

    2.다른 해결책은 JSP에서 사용할 수 있습니다.

    다른 해결책은 JSP에서 사용할 수 있습니다.

    jQuery를 사용하여 Javascript에서 값 가져 오기 :

    var jsonBom = $ ( 'jsonBom') fall ();

  3. ==============================

    3.나는 최근에 같은 필요성에 직면했다. 그래서 Aurand의 방법을 시도했지만 코드에 $ {}이 누락 된 것 같습니다. 따라서 SomeJsp.jsp 의 코드는 다음과 같습니다.

    나는 최근에 같은 필요성에 직면했다. 그래서 Aurand의 방법을 시도했지만 코드에 $ {}이 누락 된 것 같습니다. 따라서 SomeJsp.jsp 의 코드는 다음과 같습니다.

    <script>
      var model=[];
      model.paramOne="${model.paramOne}";
      model.paramTwo="${model.paramTwo}";
      model.paramThree="${model.paramThree}";
    </script>
    

    var model = $ {model}을 사용하면 자바 객체 참조를 할당하므로 할당 할 수 없습니다. 그래서 외부 JS에서 이것을 액세스하려면 :

    $(document).ready(function() {
       alert(model.paramOne);
    });
    
  4. ==============================

    4.이 방법을 사용하면이 구조로 자신 만의 프레임 워크를 만들고보다 적은 상용구로 처리 할 수 ​​있습니다.

    이 방법을 사용하면이 구조로 자신 만의 프레임 워크를 만들고보다 적은 상용구로 처리 할 수 ​​있습니다.

    죄송합니다. 약간의 오류가 있다면, 저는 핸드폰으로이 글을 직접 쓰고 있습니다.

    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>1.7.1</version>
    </dependency>
    

    Person.java (Person 객체 클래스)

    Class Person {
    
        private String name;
    
        public String getName() {
            return this.name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    }
    

    PersonController.java (Person Controller)

    @RestController
    public class PersonController implements Controller {
    
        @RequestMapping("/person")
        public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
            Person person = new Person();
            person.setName("Person's name");
            Gson gson = new Gson();
    
            ModelAndView modelAndView = new ModelAndView("person");
            modelAndView.addObject("person", gson.toJson(person));
    
            return modelAndView;
        }
    }
    

    person.jsp

    <html>
        <head>
            <title>Person Example</title>
            <script src="jquery-1.11.3.min.js"></script>
            <script type="text/javascript" src="personScript.js"></script>
        </head>
        <body>
            <h1>Person/h1>
            <input type="hidden" id="person" value="${person}">     
        </body>
    </html>
    

    personScript.js

    function parseJSON(data) {
        return window.JSON && window.JSON.parse ? window.JSON.parse( data ) : (new Function("return " + data))(); 
    }
    
    $(document).ready(function() {
        var personJson = $('#person');
        person = parseJSON(personJson.val());
        alert(person.name);
    });
    
  5. ==============================

    5.다음은 javascript에 사용할 수있는 목록 객체를 만드는 방법의 예입니다.

    다음은 javascript에 사용할 수있는 목록 객체를 만드는 방법의 예입니다.

    var listForJavascript = [];
    <c:forEach items="${MyListFromJava}" var="listItem">
      var arr = [];
    
      arr.push("<c:out value="${listItem.param1}" />");
      arr.push("<c:out value="${listItem.param2}" />");
    
      listForJavascript.push(arr);
    </c:forEach>
    
  6. ==============================

    6.클라이언트 측에 객체가 없으므로 자바 스크립트에서 java 객체에 액세스 할 수 없습니다. 일반 HTML 페이지 만 수신합니다 (숨겨진 필드가 도움이되지만 아주 좋은 방법은 아닙니다).

    클라이언트 측에 객체가 없으므로 자바 스크립트에서 java 객체에 액세스 할 수 없습니다. 일반 HTML 페이지 만 수신합니다 (숨겨진 필드가 도움이되지만 아주 좋은 방법은 아닙니다).

    나는 아약스와 @ResponseBody를 사용할 것을 제안한다.

  7. from https://stackoverflow.com/questions/22508773/how-to-access-spring-mvc-model-object-in-javascript-file by cc-by-sa and MIT license