Я ищу помощь в понимании того, как создать новый объект через форму, в которой пользователь выбирает несколько под-объектов (которые будут заполнены заранее) и доступен для выберите с помощью флажка.Spring 4 MVC Form: Создать объект со списком вспомогательных объектов
OrderController.java
@RequestMapping(value = { "/order" }, method = RequestMethod.GET)
public String order(ModelMap model) {
List<Exam> exams = examService.findAllExams();
List<Document> documents = documentService.findAllDocuments();
model.addAttribute("exams", exams);
model.addAttribute("documents", documents);
return "order"; // jsp page reference
}
Order.java
@Entity
@Table(name="\"order\"")
public class Order implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "order_id", unique = true, nullable = false)
private Integer id;
@GeneratedValue(generator = "uuid")
@GenericGenerator(name = "uuid", strategy = "uuid2")
@Column(name = "uuid", unique = true, nullable = false)
private String uuid;
@Temporal(TemporalType.DATE)
@Column(name = "order_date", unique = true, nullable = false)
private Date orderDate;
@Column(name="order_status", nullable=false)
private String orderStatus;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
private User user;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "order")
private Set<OrderExam> orderExams = new HashSet<OrderExam>(0);
@OneToMany(fetch = FetchType.LAZY, mappedBy = "order")
private Set<OrderDocument> orderDocuments = new HashSet<OrderDocument(0);
//getters & setters
}
OrderExam.java
@Entity
@Table(name="order_exam")
public class OrderExam implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "order_exam_id", unique = true, nullable = false)
private Integer id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "order_id", nullable = false)
private Order order;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "exam_id", nullable = false)
private Exam exam;
@Column(name="exam_amount", nullable=true)
private Integer examAmount;
@Column(name="answer_sheet_amount", nullable=true)
private String answerSheetName;
@Column(name="students_per_csv", nullable=true)
private String studentsPerCSV;
@Column(name="pas", nullable=true)
private Boolean pearsonAnswerSheet;
//getters & setters
}
Exam.java
@Entity
@Table(name="exam")
public class Exam implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = "exam_id", unique = true, nullable = false)
private Integer id;
@NotEmpty
@Column(name="name", unique=true, nullable=false)
private String name;
@NotEmpty
@Column(name="code", unique=true, nullable=false)
private String code;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "exam")
private Set<OrderExam> exams = new HashSet<OrderExam>(0);
//getters & setters
}
Как вы можете видеть, я передаю в списке экзаменов и документов, которые будут заполнить форму с доступными опциями (можно увидеть на изображении ниже (экзамены в любом случае)). Пользователь должен иметь возможность выбирать несколько строк, чтобы один заказ имел несколько экзаменов и документов, связанных с ним.
Мой order.jsp немного больше, чтобы разместить все вещи здесь, но вот та часть меня, которая отображается на изображении выше.
Order.jsp
<form:form method="POST" modelAttribute="order" class="form-horizontal form-label-left">
<c:forEach items="${exams}" var="exam">
<tr>
<th scope="row"><input type="checkbox" class="flat"></th>
<td><input id="middle-name" type="text" name="middle-name" readonly="readonly" value="${exam.name} - ${exam.code}" class="form-control col-md-7 col-xs-12"></td>
<td><input id="middle-name" type="text" name="middle-name" value="0" class="form-control col-md-3 col-xs-12"></td>
<td><input id="middle-name" type="text" name="middle-name" value="0" class="form-control col-md-3 col-xs-12"></td>
<td><input id="middle-name" type="text" name="middle-name" value="0" class="form-control col-md-3 col-xs-12"></td>
<c:choose>
<c:when test="${exam.name == 'Algebra 2 (Common Core)'}">
<th scope="row"><input type="checkbox" class="flat"></th>
</c:when>
<c:otherwise>
<th scope="row"></th>
</c:otherwise>
</c:choose>
</tr>
</c:forEach>
<!-- Other Stuff Goes Here -->
</form:form>
Короче говоря, будет ли кто-то готов показать мне, как создать форму в пути я описал выше? Заранее спасибо.
Спасибо за ответ Алан, я дам вам этот шанс и дам вам знать, как это работает. –
Что вы хотели знать? –
В той же форме мне нужно заполнить выпадающий список и разрешить пользователю выбирать один вариант и публиковать его обратно с остальной информацией. Как мне настроить этот код с приведенным выше кодом? –