Как вставить несколько строк из веб-формы в базу данных с помощью Java Spring Framework - PullRequest
2 голосов
/ 10 ноября 2011

Я новичок в Java Spring Framework и у меня есть требование в моем новом проекте.

Используя Spring Framework, у меня есть класс POJO с методами set и get.У меня также есть промежуточный Java-сервис и веб-классы.я использовал теги <form> для отображения из jsp в класс bean-компонента и мог выполнять все действия с одним объектом.

Но моя проблема в том, как я могу выполнить одну и ту же работу для более чем одного объекта (запись).

Проще говоря: как вставить 7 строк (записей) в таблицу базы данных одновременно, используя входные данные из моей страницы jsp.Как мне принять входные параметры со своей страницы jsp и создать 7 объектов, соответствующих 7 строкам, а затем вставить их по нажатию кнопки «Отправить»?

Пожалуйста, предоставьте некоторые рекомендации для этого.

1 Ответ

8 голосов
/ 10 ноября 2011

Я бы достиг этого, если бы другой POJO служил контейнером со списком ваших POJO внутри.

Это будет выглядеть так:

public class PojoForm {
    private List<Pojo> pojos;
    public List<Pojo> getPojos() {
        return pojos;
    }
    public void setPojos(List<Pojo> pojos) {
        this.pojos = pojos;
    }
}

Затем в контроллере используйте этот контейнер вместо фактического pojo в качестве атрибута модели.

@ModelAttribute("pojoForm")
public PojoForm populatePojos() {
    // Don't forget to initialize the pojos list or else it won't work
    PojoForm pojoForm = new PojoForm();
    List<Pojo> pojos = new ArrayList<Pojo>();
    for(int i=0; i<2; i++) {
        pojos.add(new Pojo());
    }
    pojoForm.setPojos(pojos);
    return pojoForm;
}

@RequestMapping(method=RequestMethod.POST)
public String saveForm(@ModelAttribute("pojoForm") PojoForm pojoForm) {
    for(Pojo pojo : pojoForm.getPojos()) {
       service.save(pojo);
    }
    return "theview.jsp";
}

Тогда вид должен выглядеть примерно так:

<form:form commandName="pojoForm" method="POST">
    <!-- Pojo 1 -->
    <form:input path="pojos[0].a" />
    <form:input path="pojos[0].b" />
    <form:input path="pojos[0].c" />
    <!-- Pojo 2 -->
    <form:input path="pojos[1].a" />
    <form:input path="pojos[1].b" />
    <form:input path="pojos[1].c" />
</form:form>

a, b и c - свойства класса Pojo.

Вы также можете выполнить цикл по списку следующим образом:

<form:form commandName="pojoForm" method="POST">
    <c:forEach items="${pojoForm.pojos}" varStatus="i">
        <form:input path="pojos[${i.index}].a" />
        <form:input path="pojos[${i.index}].b" />
        <form:input path="pojos[${i.index}].c" />
    </c:forEach>
</form:form>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...