【问题标题】:Confused with spring MVC JSP page binding对spring MVC JSP页面绑定感到困惑
【发布时间】:2011-07-09 18:24:52
【问题描述】:

我无法解决绑定问题。

我有一类人

Class Person {

Private fname;
private lname;
public Address address;

现在是另一个类

class Address {

    private street;
    private suburb;
}

在控制器中我有

model.addAttribute("personAttribute", new Person());

在我的 jsp 页面中

<form:form modelAttribute="personAttribute" method="POST" action="${saveUrl}">
<td><form:input path="firstName"/></td>

直到这个 evrrythng 还可以,但是当我添加时

<td><form:input path="street"/></td>

那么问题就来了。我不知道如何将 Adress 对象添加到 person。

我的意思是我必须这样做

    model.addAttribute("personAttribute", new Person(new Address()));
    or

    model.addAttribute("addressAttribute", new Address());
or

td><form:input path="person.address.street"/></td>

【问题讨论】:

    标签: java jsp data-binding spring-mvc


    【解决方案1】:

    你必须像这样绑定路径:

    <td><form:input path="address.street"/></td>
    

    这是因为您在绑定中的Person 对象范围内。

    【讨论】:

    • 我有 Set
      个人对象会有所作为
    • @Pasha 是的。在这种情况下,我向您推荐AutoPopulatingList。然后你必须绑定地址,如addresses[1], addresses[2] ...
    • 实际上我不是在检索,而是在插入值。所以就像你的 address.street (它有效),现在我怎么能写像 Address[].street 或什么。是否有任何在线示例列表或集合以弹簧形式绑定
    • 读/写是通过绑定来管理的,所以如果你正确地绑定了你的数据对象,那么当你将它发布到服务器时,你会在你的方法中填写带有@ModelAttribute 注释的输入参数。参考Spring doc
    【解决方案2】:

    以下代码正确:

    model.addAttribute("personAttribute", new Person());
    

    这将使用空属性初始化 Person,包括空地址。

    如果你想确保地址不为空,你必须传递一个包含值的 person 实例。例如

    Person person = new Person();
    person.setFirstName("John");
    person.setLastName("Smith");
    
    Address address = new Address();
    address.setStreet("#10 Avenue");
    address.setSuburb("Cook");
    
    person.setAddress(address);
    

    通常,您可能希望使用从数据库或数据源中检索到的值填充 person 对象。

    【讨论】:

    • 实际上我在数据库中插入值。所以你能解释一下我必须在jsp页面中写什么,比如person.address.street是那里的有效名称
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 2016-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多