Как контроллер может захватывать данные из формы, разработанной в jquery? - PullRequest
1 голос
/ 20 марта 2011

[весна 3.0.5]

Мой пользовательский объект:

public class UserForm {

    @NotEmpty
    @Size(max = 19)
    private String firstName;

    @NotEmpty
    @Size(max = 19)
    private String lastName;

    @NotEmpty
    @Size(max = 19)
    @Email
    private String email;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

Объект UserAddress

 public class AddressForm {

    @NotEmpty
    @Size(max = 19)
    private String addressName;

    @NotEmpty
    @Size(max = 19)
    private String street;

    @NotEmpty
    @Size(max = 19)
    private String city;

    @NotEmpty
    @Size(max = 19)
    private String country;

    public String getAddressName() {
        return addressName;
    }

    public void setAddressName(String addressName) {
        this.addressName = addressName;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }
}

Моя JSP-страница

<form:form id="registerForm" commandName="userForm" action="registered">
<form:input id="firstName" path="firstName" /><form:errors path="firstName" />
<form:input id="lastName" path="lastName" /><form:errors path="lastName" />
<form:input id="email" path="email" /><form:errors path="email" />
<input type="button" value="add address" />
<input type="button" value="del address" />
<input type="button" value="SUBMIT" />
</form:form>

Я хочу видеть после нажатия кнопки Добавить URL (удалить адрес), есть поля для объекта AddressForm.Добавление полей с помощью jquery сделало что-то вроде этого:

var i  = 0:
$("#addbtn").click(function() {
    $("#someId").append(
         '<input type="text" name="street_' + i + '" />' + 
         '<input type="text" name="city_'   + i + '" />');
    i++;
});

Мой контроллер имеет метод отображения

@RequestMapping(value = "/registered", method= RequestMethod.POST)
    public String varify(@ModelAttribute("userForm") UserForm userForm, HttpServletRequest req) {
        return "redirect:index";
}

Как контроллер может захватывать данные из формы, разработанной в jquery?

Пожалуйста, помогите.

1 Ответ

0 голосов
/ 20 марта 2011

Вам необходимо привязать значения в массив / список к вашему бобу. В этом случае, если список динамический, вам может понадобиться LazyList (общая коллекция apache) в вашем объекте формы.

private List<String> city = LazyList.decorate(new ArrayList(),
          FactoryUtils.instantiateFactory(String.class));
// getter /setter

А в вашем jquery:

var i  = 0:
$("#addbtn").click(function() {
    $("#someId").append(
         '<input type="text" name="street[' + i + ']" />' + 
         '<input type="text" name="city['   + i + ']" />');
    i++;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...