[英]Spring MVC/Thymeleaf - How to insert to two different tables using one input field?
[英]Adding two objects that belong to two different models with similar attribute names in one form using Thymeleaf and Spring MVC
我有一個帶有字段(名字,姓氏,移動電話和電子郵件等)的學生類,還有一個帶有某些字段具有相同名字(名字,姓氏和電子郵件的其他名字)的監護人類。
在“添加學生”視圖中,用戶應輸入學生的詳細信息及其監護人的個人信息:
...
<div class="col s6">
<div th:object="${student}" class="form-details row">Enter team member information
</div>
<div hidden="false">
<label>Project</label>
<input th:field="*{project}" th:value="${project}"/>
</div>
<label>First Name</label>
<input type="text" th:field="*{firstName}"/><br/><br/>
<label>Last Name</label>
<input type="text" th:field="*{lastName}"/><br/><br/>
<label>Email Address</label>
<input type="text" name="email" th:field="*{email}"/><br/><br/>
<label>Mobile Number</label>
<input type="text" name="mobile" th:field="*{mobile}"/><br/><br/>
...
對於監護人:
<div th:object="${guardian}" class="form-details">Enter guardian's information
</div>
<label>First Name</label>
<input type="text" th:field="*{firstName}"/><br/><br/>
<label>Last Name</label>
<input type="text" th:field="*{lastName}"/><br/><br/>
<label>Mobile Number</label>
<input type="text" name="mobile" th:field="*{mobile}"/><br/><br/>
控制器正在將兩個對象正確添加到視圖中:
@RequestMapping(value = "/add", method = RequestMethod.GET)
public ModelAndView addStudent(@RequestParam(value = "projectId") Integer projectId,
HttpServletRequest request) {
String lang = (String) request.getSession().getAttribute("lang");
ModelAndView modelAndView = new ModelAndView();
if(lang.equals("en")) {
modelAndView.setViewName("student-form");
}
else {
modelAndView.setViewName("arabic/student-form-ar");
}
Student student = new Student();
student.setProject(projectService.findOneById(projectId));
modelAndView.addObject("student", student);
modelAndView.addObject("guardian", new Guardian());
modelAndView.addObject("project", projectService.findOneById(projectId));
return modelAndView;
}
然后保存兩個對象:
@RequestMapping(value = "/save", method = RequestMethod.POST, params = {"next"})
public ModelAndView saveStudent(Student student, Guardian guardian,
Project project) {
// first student
if(studentService.findAllByProject(project).isEmpty()) // the first student
student.setLeader(true);
else // not the first student
student.setLeader(false);
guardianService.save(guardian);
student.setGuardian(guardian);
studentService.save(student);
ModelAndView modelAndView = new ModelAndView("redirect:/supervisor/add?projectId="+project.getId().toString());
return modelAndView;
}
這些值將被串聯並為每個對象添加。 例如:如果我為學生輸入:名字:Student FN
監護人的名字:名字:Guardian FN
我在數據庫中同時獲得了學生表和監護人表的以下記錄:學生FN,監護人FN
有什么方法可以使Thymeleaf區分兩者嗎? 除了明顯改變模型。
我相信您可能未正確引用百里香葉中的數據。 看起來當您使用th:field=*{}
您正在定義th:object=${}
的div之外進行此操作。 嘗試在同一div內執行此操作。 我想嘗試的另一件事是直接使用來以這種方式引用字段。 表示法: th:field=${student.firstName}
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.