Spring MVC: обработка значений из расписания - несколько объектов - PullRequest
1 голос
/ 23 марта 2011

Я работаю над приложением расписания / actiontracker.Я использую Spring MVC.Это моя текущая ситуация:

Я получил форму со всеми заданиями.Рядом с этими задачами есть семь текстовых полей (которые показывают количество часов на следующие семь дней).Пользователь должен иметь возможность сохранять задачи (и часы).Я не совсем уверен, как отправить эти результаты в контроллер.Содержит список объектов.Допустим ...

TaskID - Taskname - D1 - D2 - D3 ...
1        Hello      5    3    2
2        Bai        4    2    1
3        I'm back   3    4    3

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

Есть идеи, как это сделать?*

1 Ответ

3 голосов
/ 23 марта 2011

Это сработало для меня, надеюсь, это поможет!

Контроллер

@Controller
public class ExampleController {

    private Timesheet timesheet;

    public ExampleController() {
        List<Task> tasks = new ArrayList<Task>();
        tasks.add(new Task(1, "Hello", 0, 0, 0, 0, 0, 0, 0));
        tasks.add(new Task(2, "Bai", 0, 0, 0, 0, 0, 0, 0));
        tasks.add(new Task(3, "I'm back", 0, 0, 0, 0, 0, 0, 0));
        this.timesheet = new Timesheet(tasks);
    }

    @RequestMapping(value = "/timesheet.do", method = RequestMethod.GET)
    public ModelAndView displayTimeSheet() {
        return new ModelAndView("timesheet", "timesheet", timesheet);
    }

    @RequestMapping(value = "/timesheet.do", method = RequestMethod.POST)
    public ModelAndView updateTimeSheet(@ModelAttribute("timesheet") Timesheet timesheet) {
        this.timesheet = timesheet;
        return new ModelAndView("timesheet", "timesheet", timesheet);
    }

}

JSP Page

<form:form commandName="timesheet">
  <table>
    <tr>
      <th>TaskID</th>
      <th>Taskname</th>
      <th>D1</th>
      <th>D2</th>
      <th>D3</th>
      <th>D4</th>
      <th>D5</th>
      <th>D6</th>
      <th>D7</th>
    </tr>
    <c:forEach items="${timesheet.tasks}" var="task" varStatus="tasksRow">
      <tr>
        <td>
          <form:hidden path="tasks[${tasksRow.index}].id"/>
          <c:out value="${timesheet.tasks[tasksRow.index].id}"/>
        </td>
        <td>
          <form:hidden path="tasks[${tasksRow.index}].name"/>
          <c:out value="${timesheet.tasks[tasksRow.index].name}"/>
        </td>
        <td>
          <form:input path="tasks[${tasksRow.index}].day1hours"/>
        </td>
        <td>
          <form:input path="tasks[${tasksRow.index}].day2hours"/>
        </td>
        <td>
          <form:input path="tasks[${tasksRow.index}].day3hours"/>
        </td>
        <td>
          <form:input path="tasks[${tasksRow.index}].day4hours"/>
        </td>
        <td>
          <form:input path="tasks[${tasksRow.index}].day5hours"/>
        </td>
        <td>
          <form:input path="tasks[${tasksRow.index}].day6hours"/>
        </td>
        <td>
          <form:input path="tasks[${tasksRow.index}].day7hours"/>
        </td>
      </tr>
    </c:forEach>
  </table>
  <input type="submit"/>
</form:form>

Модель классов

public class Timesheet {

    private List<Task> tasks;

public class Task {

    private int    id;
    private String name;
    private int    day1hours;
    private int    day2hours;
    private int    day3hours;
    private int    day4hours;
    private int    day5hours;
    private int    day6hours;
    private int    day7hours;

Вы можете скачать весь пример проекта здесь:

http://www.bitsandbytecode.com/ftp/spring-mvc-multi-record-form.zip

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...