【问题标题】:Access Spring MVC model object from jQuery从 jQuery 访问 Spring MVC 模型对象
【发布时间】:2016-11-27 22:33:22
【问题描述】:

我的 Controller 中有一个简单的模型对象 Person,我想在 jQuery 中访问该对象。

我正在尝试将对象从 Controller 传递到 JSP 视图,然后从 JSP 视图中的 jQuery 访问对象Javascript 文件。

代码如下:

Person.java

public class Person {

    private String name;

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return 25;
    }

    public String getLastname() {
        return "Ybarra";
    }

}

控制器方法

@RequestMapping("/person")
public ModelAndView handleRequest() throws Exception {
    Person person = new Person();
    person.setName("Person's name");

    ObjectMapper mapper = new ObjectMapper();

    String json = mapper.writeValueAsString(person);

    ModelAndView modelAndView = new ModelAndView("person.jsp");
    modelAndView.addObject("person", json);

    return modelAndView;
}

person.jsp

//...
<body>
    <h1>Person</h1>
    <input type="hidden" id="person" value="${person}">
</body>
/...

Javascript 文件

    //...
    var p = $('#person');

    console.log(p);
    console.log(p.lastname);
    console.log(p.age);
    // ...

问题是控制台输出p.lastnamep.age的输出undefined,但正确输出console.log(p).的整个对象如何访问lastnameage属性?

【问题讨论】:

    标签: javascript jquery spring jsp


    【解决方案1】:

    您只能访问已创建的属性,并且您没有在 Person bean 类中创建 agelastname 属性,因此请更改您的 Person 类,如下所示:

    public class Person {
    
            private String name;
    
            private int age; //age property
    
            private int lastname; //lastname property
    
            public String getName() {
                return name;
            }
    
            public void setName(String name) {
                this.name = name;
            }
    
            public int getAge() {
                return 25;
            }
    
            public void setAge(int age) {
                this.age = age;
            }
    
            public int getLastname() {
                return "Ybarra";
            }
    
            public void setLastname(int lastname) {
                this.lastname = lastname;
            }
        }
    

    【讨论】:

    • 改变了,但仍然是未定义的!
    猜你喜欢
    • 1970-01-01
    • 2014-04-25
    • 2021-05-12
    • 1970-01-01
    • 2019-07-10
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    相关资源
    最近更新 更多