Я новичок в весенней загрузке и сейчас работаю над проектом расписания. В моей системе добавление и удаление timeTable работает правильно, а обновление timeTable - нет. Когда я добавляю timeTable, он создает (# timeslots * #days строк в таблице базы данных, и у всех этих строк есть общий код). Когда я выбираю edit, http://localhost:8080/timeTableMapping/edit/116
передается как URL (116 - общий код). Что мне нужно сделать, это загрузить правильную тему в поле соответствующего и сохранить правильно обновленные данные в базе данных. Кто-нибудь может мне помочь. thx
updatetimeTableMapping 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>Update 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="*{code}">
<option value="">Choose..</option>
<option th:each="timeTable: ${timeTables}" th:value="${timeTable.id}" th:text="${timeTable.name}"/>
</select>
</td>
</tr>
</table>
<table border="1" >
<thead>
<tr>
</tr>
<br>
<th></th>
<th>Monday</th>
<td style="background-color: cornflowerblue;"></td >
<td style="background-color: cornflowerblue;"></td>
<td style="background-color: cornflowerblue;"></td>
<th>Tuesday</th>
<td style="background-color: cornflowerblue;"></td >
<td style="background-color: cornflowerblue;"></td>
<td style="background-color: cornflowerblue;"></td>
<th>Wednesday</th>
<td style="background-color: cornflowerblue;"></td >
<td style="background-color: cornflowerblue;"></td>
<td style="background-color: cornflowerblue;"></td>
<th>Thursday</th>
<td style="background-color: cornflowerblue;"></td >
<td style="background-color: cornflowerblue;"></td>
<td style="background-color: cornflowerblue;"></td>
<th>Friday</th>
<td style="background-color: cornflowerblue;"></td >
<td style="background-color: cornflowerblue;"></td>
<td style="background-color: cornflowerblue;"></td>
</thead>
<tbody>
<th:block th:each="time : ${times}">
<tr>
<th th:text="${ time.start }+':00 - ' + ${ time.end }+':00'"></th>
<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:selected="${subject_code}" th:text="${subject.name} "/>
<td><input type="text" th:value="${day.name}" name="day" style="display:none;width:0px" /></td>
<td><input type="text" th:value="${time.start}" name="start" style="display:none;width:0px" /></td>
<td><input type="text" th:value="${time.end}" name="end" style="display:none;width:0px" /></td>
</select>
</td>
</th:block>
</tr>
</th:block>
<tr>
<td colspan="2">
<button type="submit">Save</button>
</td>
</tr>
</tbody>
</table>
</form>
</div>
</body>
</html>
timeTableMapping Model
@Entity
@Table(name="timetablemappings")
@EntityListeners(AuditingEntityListener.class)
public class TimeTableMapping {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String day;
private String start;
private String end;
private String subject_code;
private String time_table_code;
private Long code;
public TimeTableMapping () {
}
public TimeTableMapping(Long code) {
this.code = code;
}
public TimeTableMapping(String day, String start, String end, String subject_code, String time_table_code, Long code) {
this.day = day;
this.start = start;
this.end = end;
this.subject_code = subject_code;
this.time_table_code = time_table_code;
this.code = code;
}
public TimeTableMapping( Long code,String day, String start, String end, String subject_code) {
this.code = code;
this.day = day;
this.start = start;
this.end = end;
this.subject_code = subject_code;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getDay() {
return day;
}
public void setDay(String day) {
this.day = day;
}
public String getStart() {
return start;
}
public void setStart(String start) {
this.start = start;
}
public String getEnd() {
return end;
}
public void setEnd(String end) {
this.end = end;
}
public String getSubject_code() {
return subject_code;
}
public void setSubject_code(String subject_code) {
this.subject_code = subject_code;
}
public String getTime_table_code() {
return time_table_code;
}
public void setTime_table_code(String time_table_code) {
this.time_table_code = time_table_code;
}
public Long getCode() {
return code;
}
public void setCode(Long code) {
this.code = code;
}
}
репозиторий timeTableMapping
@Repository
public interface TimeTableMappingRepository extends JpaRepository<TimeTableMapping, Long> {
@Query("SELECT DISTINCT t.code FROM TimeTableMapping t")
List<Long> findTimeTableMappingDistinctByCode();
List<TimeTableMapping> findByCode(Long code);
}
timeTableMapping DAO
@Service
public class TimeTableMappingDAO {
@Autowired
TimeTableRepository timeTableRepository;
@Autowired
TimeTableMappingRepository timeTableMappingRepository;
//to save
public TimeTableMapping save(TimeTableMapping timeTableMapping){
return timeTableMappingRepository.save(timeTableMapping);
}
//to save all
public void saveAll(List<TimeTableMapping> timeTableMapping){
timeTableMappingRepository.saveAll(timeTableMapping);
}
//to search all
public List<TimeTableMapping> findAll(){
return timeTableMappingRepository.findAll();
}
public List<Long> findDistinct(){
return timeTableMappingRepository.findTimeTableMappingDistinctByCode();
}
//get by id
public TimeTableMapping findById(Long id){
return timeTableMappingRepository.findById(id).orElse(null);
}
//public TimeTableMapping findByCode(Long code){
// return timeTableMappingRepository.findByCode(code);
//}
//delete
public void delete(Long id){
timeTableMappingRepository.deleteById(id);
}
}
контроллер timeTableMapping
@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){
System.out.println("hey");
List<Long> timeTableMappingDetails= timeTableMappingDAO.findDistinct();
// List<TimeTableMapping> timeTableMappingDetails=timeTableMappingDAO.select(timeTableMappingDetails1);
System.out.println("hey");
System.out.println(timeTableMappingDetails.toString());
List<TimeTableMapping> tempList=new ArrayList<>();
for(int i = 0 ; i < timeTableMappingDetails.size(); i++) {
TimeTableMapping tempTimeTable = new TimeTableMapping();
tempTimeTable.setCode(timeTableMappingDetails.get(i));
tempList.add(tempTimeTable);
System.out.println(timeTableMappingDetails.get(i));
}
model.addAttribute("timeTableMappingDetails",tempList);
return "timeTableMapping";
}
@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(",");
String[] startArray = timeTableMapping.getStart().split(",");
String[] endArray = timeTableMapping.getEnd().split(",");
String[] uniqueDay = Arrays.stream(dayArray).distinct().toArray(String[]::new);
String[] uniqueStart = Arrays.stream(startArray).distinct().toArray(String[]::new);
String[] uniqueEnd = Arrays.stream(endArray).distinct().toArray(String[]::new);
List<TimeTableMapping> tempList = new ArrayList<>();
int count=0;
for(int j=0;j<uniqueStart.length;j++) {
for(int i = 0 ; i < uniqueDay.length; i++) {
TimeTableMapping tempTimeTable = new TimeTableMapping();
tempTimeTable.setStart(uniqueStart[j]);
System.out.println(uniqueStart[j]);
tempTimeTable.setEnd(uniqueEnd[j]);
tempTimeTable.setTime_table_code(timeTableMapping.getTime_table_code());
tempTimeTable.setCode(timeTableMapping.getCode());
tempTimeTable.setDay(uniqueDay[i]);
tempTimeTable.setSubject_code(subArray[count]);
tempList.add(tempTimeTable);
count++;
}
}
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("/timeTableMapping/edit/{id}")
public ModelAndView updateTimeTable(@PathVariable(name="id")Long id){
ModelAndView mav=new ModelAndView(("updateTimeTableMapping"));
//mav.addObject("timeTableMapping", new TimeTableMapping());
TimeTableMapping timeTableMapping = timeTableMappingDAO.findById(id);
//System.out.println(timeTableMapping.getTime_table_code());
// List<TimeTableMapping> timeTableMapping1= timeTableMappingDAO.select(timeTableMapping.getTime_table_code());
mav.addObject("timeTableMapping",timeTableMapping);
List<TimeTable> timeTableDetails = timeTableDAO.findAll();
mav.addObject("timeTables", timeTableDetails);
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/{code}")
public String deleteProduct(@PathVariable(name="code") Long code){
timeTableDAO.delete(code);
return "redirect:/timeTableMapping";
}
}
репозиторий Github https://github.com/Ayesh17/attendance