gpt4 book ai didi

java - 如何将数据保存在多个 sql 行的一个 thymeleaf 页面中

转载 作者:行者123 更新时间:2023-11-29 07:17:51 25 4
gpt4 key购买 nike

我是 spring-boot 的新手。在我的 thymeleaf 页面中,我使用了一个 for 循环来生成标题并在每个标题下都有一个下拉列表。我需要将该标题和选定的下拉项保存在一个 sql 行中。(例如:我在 for 循环中使用一周中的几天作为标题,用户可以在每个标题下选择一个主题,当用户选择主题并单击提交按钮时,应保存 5 条 sql 行以及日期和主题)但目前它将所有日期和主题保存在 1 条 sql 行 enter image description here enter image description here enter image description hereaddTimeTableMapping thymeleaf View

<!DOCTYPE html>
<html xmlns:th="https://www.thymeleaf.org">
<head>
<link rel="stylesheet" type="text/css" href="static/css/timeTableMapping.css" th:href="@{/css/timeTableMapping.css}">
<meta charset="UTF-8">
<title>Time Table</title>
</head>
<body>



</form>
<div class="container2">
<form action="#" th:action="@{/timeTableMapping/saveAll}" th:object="${timeTableMapping}" method="post">
<table border="0" cell[adding="10">
<tr>
<td><h1>Time Table:</h1></td>
<td>
<select th:field="*{time_table_code}">
<option value="">Choose..</option>
<option th:each="timeTable: ${timeTables}" th:value="${timeTable.name}" th:text="${timeTable.name}"/>
</select>
</td>
</tr>
</table>

<table border="1" >
<thead>
<tr>
</tr>
<br>

<th:block th:each="day : ${days}">
<th th:value="${day.name}" th:text="${day.name}"></th>
</th:block>


</thead>
<tbody>




<th:block th:each="day : ${days}">
<td>
<select th:field="*{subject_code}">
<option value=""></option>
<option th:each="subject: ${subjects}" th:value="${subject.subject_code}" th:text="${subject.name}"/>
<td><input type="text" th:value="${day.name}" name="day" style="display:none" /></td>

</select>
</td>
</th:block>


<tr>
<td colspan="2">
<button type="submit">Save</button>

</td>
</tr>

</tbody>
</table>
</form>
</div>

</body>
</html>

时间表映射 Controller

  @Controller
public class TimeTableMappingController {
@Autowired
private TimeTableMappingDAO timeTableMappingDAO;

@Autowired
private TimeTableDAO timeTableDAO;

@Autowired
private SubjectDAO subjectDAO;

@Autowired
private StudentGroupDAO studentGroupDAO;

@Autowired
private DayDAO dayDAO;

@Autowired
private TimeDAO timeDAO;



@RequestMapping("/timeTableMapping")
public String viewHomePage(Model model){
List<TimeTableMapping> timeTableMappingDetails= timeTableMappingDAO.findAll();
model.addAttribute("timeTableMappingDetails",timeTableMappingDetails);
return "timeTableMapping";
}

/*
@RequestMapping ("/timeTableMapping/new")
public String addTimeTableMapping(Model model) {
TimeTableMappingDTO timeTablesForm = new TimeTableMappingDTO();
for (int i = 1; i <= 3; i++) {
timeTablesForm.addTimeTableMapping(new TimeTableMapping());
}

model.addAttribute("form", timeTablesForm);

return "addTimeTableMapping";
}
*/


@RequestMapping(value="/timeTableMapping/saveAll",method= RequestMethod.POST)
public String saveTimeTable(@ModelAttribute("timeTableMapping") TimeTableMapping timeTableMapping){

String[] dayArray = timeTableMapping.getDay().split(",");
String[] subArray = timeTableMapping.getSubject_code().split(",");


List<TimeTableMapping> tempList = new ArrayList<>();
for(int i = 0 ; i < dayArray.length; i++) {
TimeTableMapping tempTimeTable = new TimeTableMapping();
tempTimeTable.setTime_table_code(timeTableMapping.getTime_table_code());
System.out.println(timeTableMapping.getTime_table_code());
tempTimeTable.setDay(dayArray[i]);
System.out.println(dayArray[i]);
tempTimeTable.setSubject_code(subArray[i]);
System.out.println(subArray[i]);
tempTimeTable.setStart(timeTableMapping.getStart());
tempTimeTable.setEnd(timeTableMapping.getEnd());
tempList.add(tempTimeTable);
}
timeTableMappingDAO.saveAll(tempList);
return "redirect:/timeTableMapping";
}


@RequestMapping("/timeTableMapping/new")
public String addTimeTableMapping(Model model){
System.out.println("hey");
System.out.println("hey");
TimeTableMapping timeTableMapping =new TimeTableMapping();
model.addAttribute("timeTableMapping",timeTableMapping);

List<TimeTable> timeTableDetail = timeTableDAO.findAll();
model.addAttribute("timeTables", timeTableDetail);

List<Subject> subjectDetail = subjectDAO.findAll();
model.addAttribute("subjects", subjectDetail);

String[] days = new String[] { "Monday", "Tuesday"};

List<Day> dayDetails = dayDAO.findAll();
model.addAttribute("days",dayDetails);

List<Time> timeDetails = timeDAO.findAll();
model.addAttribute("times",timeDetails);

return "addTimeTableMapping";
}


/*

@RequestMapping(value="/timeTableMapping/saveAll",method= RequestMethod.POST)
public void saveAll(List<TimeTableMapping> timeTableMappingList) { timeTableMappingDAO.saveAll(timeTableMappingList);}

@RequestMapping(value="/timeTableMapping/save",method= RequestMethod.POST)
public String saveTimeTable(@ModelAttribute("timeTableMapping") TimeTableMapping timeTableMapping){
System.out.println("hello");
System.out.println("hello");
System.out.println("hello");
System.out.println(timeTableMapping.getId());
System.out.println(timeTableMapping.getDay());
System.out.println(timeTableMapping.getStart());
System.out.println(timeTableMapping.getEnd());
System.out.println(timeTableMapping.getSubject_code());
System.out.println(timeTableMapping.getTime_table_code());
timeTableMappingDAO.save(timeTableMapping);
return "redirect:/timeTableMapping/new";
}
@RequestMapping(value="/timeTableMapping/saveAll",method= RequestMethod.POST) public String saveTimeTable(@ModelAttribute("timeTableMapping") TimeTableMapping timeTableMapping){

String[] dayArray = timeTableMapping.getDay().split(",");
String[] subArray = timeTableMapping.getSubject_code().split(",");


List<TimeTableMapping> tempList = new ArrayList<>();
for(int i = 0 ; i < dayArray.length; i++) {
TimeTableMapping tempTimeTable = new TimeTableMapping();
tempTimeTable.setTime_table_code(timeTableMapping.getTime_table_code());
tempTimeTable.setDay(dayArray[i]);
tempTimeTable.setSubject_code(subArray[i]);
tempTimeTable.setStart(timeTableMapping.getStart());
tempTimeTable.setEnd(timeTableMapping.getEnd());
tempList.add(tempTimeTable);
}
timeTableMappingDAO.saveAll(tempList);
return "redirect:/timeTableMapping";
}
/*
@RequestMapping(value="/timeTableMapping/saveAll",method= RequestMethod.POST)
public String saveAll(@ModelAttribute("timeTableMapping") TimeTableMapping timeTableMapping){
timeTableDAO.saveAll(timeTableMapping);
return "redirect:/timeTableMapping";
}*/

@RequestMapping("/timeTableMapping/edit/{id}")
public ModelAndView updateTimeTable(@PathVariable(name="id")Long id){
ModelAndView mav=new ModelAndView(("updateTimeTable"));

TimeTable timeTable = timeTableDAO.findById(id);
mav.addObject("timeTable",timeTable);

List<Subject> subjectDetails = subjectDAO.findAll();
mav.addObject("subjects", subjectDetails);

List<StudentGroup> studentGroupDetails = studentGroupDAO.findAll();
mav.addObject("studentGroups",studentGroupDetails);

List<Day> dayDetails = dayDAO.findAll();
mav.addObject("days",dayDetails);

List<Time> timeDetails = timeDAO.findAll();
mav.addObject("times",timeDetails);

return mav;
}

@RequestMapping("/timeTableMapping/delete/{id}")
public String deleteProduct(@PathVariable(name="id") Long id){
timeTableDAO.delete(id);
return "redirect:/timeTable";
}
}

timeTableMapping 存储库

@Repository
public interface TimeTableMappingRepository extends JpaRepository<TimeTableMapping, Long> {
}

最佳答案

您正在使用表单提交来保存复杂的数据,这比编写 java 脚本并将您的信息保存在 javascript 对象中并将 json 字符串发送到 Controller 以使用列表保存要复杂得多。

现在对于您的实现来说,简单的 hacky 解决方案就是这样。

1) saveTimeTable 实现如下

@RequestMapping(value="/timeTableMapping/saveAll",method= RequestMethod.POST) public String saveTimeTable(@ModelAttribute("timeTableMapping") TimeTableMapping timeTableMapping){

String[] dayArray = timeTableMapping.getDay().split(",");
String[] subArray = timeTableMapping.getSubject_code().split(",");


List<TimeTableMapping> tempList = new ArrayList<>();
for(int i = 0 ; i < dayArray.length; i++) {
TimeTableMapping tempTimeTable = new TimeTableMapping();
tempTimeTable.setTime_table_code(timeTableMapping.getTime_table_code());
tempTimeTable.setDay(dayArray[i]);
tempTimeTable.setSubject_code(subArray[i]);
tempTimeTable.setStart(timeTableMapping.getStart());
tempTimeTable.setEnd(timeTableMapping.getEnd());
tempList.add(tempTimeTable);
}
timeTableMappingDAO.saveAll(tempList);
return "redirect:/timeTableMapping";
}

关于java - 如何将数据保存在多个 sql 行的一个 thymeleaf 页面中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58248983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com