【发布时间】:2018-08-06 13:13:56
【问题描述】:
我的用户正在添加一个考试对象,然后将其添加到主题对象中。科目和考试有一对多的关系。 用户在下拉菜单中选择主题。此菜单包含字符串而不是实际的主题对象。 在这种形式中,我如何将考试对象和选定的项目(字符串)发送到控制器?
我的 HTML 文件
<form action="#" th:action="@{/addExam}" th:object="${exam}"
method="post">
<div th:object="${subject}">
<select th:field="*{option}" class="form-control" id="subjectOrder"
name= "subjectOrder">
<option value="">Select subject</option>
<option
th:each="Subject : ${subjects}"
th:value="${Subject}"
th:text="${Subject}"></option>
</div>
<div>
<table>
<tr>
Exam Title
<td><input type="text" th:field="*{examTitle}" /></td>
</tr>
<tr>
<td> Exam grade worth </td>
<td><input th:field="*{examGradeWorth}" /></td>
</tr>
<tr>
<td><button type="submit">Submit post</button></td>
</tr>
</table>
</div>
</form>
控制器,我想将主题名称设置为用户在下拉框中选择的主题。
@GetMapping("/addexam")
public String showExamForm(Model model) {
Authentication loggedInUser =
SecurityContextHolder.getContext().getAuthentication();
String email = loggedInUser.getName();
User user = userRepository.findByEmailAddress(email);
ArrayList<String> subjects = new ArrayList<String>();
for(Subject sub:user.getSubject())
{
subjects.add(sub.getSubjectName());
}
model.addAttribute("subjects", subjects);
return "addExam";
}
@PostMapping("/addexam")
public String addNewExam(@ModelAttribute("exam") @Valid @RequestBody Exam
exam,UserRegistrationDto userDto, BindingResult result, Model model) {
examRepository.save(exam);
model.addAttribute("examTitle", exam.getExamTitle());
model.addAttribute("examGradeWorth", exam.getExamGradeWorth());
String subjectName = ();
//I want to set subjectName to equal the selected option.
Subject subject = subjectRepository.findBySubjectName(subjectName);
subject.addExam(exam);
subjectRepository.save(subject);
return "userProfile1";
}
【问题讨论】:
-
@Cata 是的,我是故意这样做的,因为我非常渴望帮助,我已经被困在这个问题上几个星期了!
-
我认为在这种情况下一个好的做法是用新信息或更详细的信息更新您的帖子。这样,问题将再次出现在顶部(据我所知......)
标签: java spring spring-boot drop-down-menu thymeleaf