在我的控制器中,我有一个循环遍历arraylist并显示属于该arraylist中每个对象的属性的循环,我想知道应该在我的百里香代码中放什么,因为目前它仅显示第一个对象的信息。数组列表。
我的控制器班
@GetMapping("/allSubjects")
public String shoSubjects(@ModelAttribute("subject") @Valid UserRegistrationDto userDto, BindingResult result, 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);
if(!subjects.isEmpty()) {
for(int i = 0; i<subjects.size(); i++) {
String subjectName = (subjects.get(i));
Subject subject = subjectRepository.findBySubjectName(subjectName);
String subjectName1 = subject.getSubjectName();
Double subjectGradeGoal = subject.getSubjectGradeGoal();
Double caCompletedWorth = subject.getCaCompletedWorth();
Double subjectResults = subject.getSubjectResults();
Double maxSubRemMarks = subject.getMaxSubRemMarks();
Double marksNeededToReachGoal = subject.getMarksNeededToReachGoal();
Boolean isGoalPossible = subject.getIsGoalPossible();
Double highestPossibleGrade = subject.getHighestPossibleGrade();
model.addAttribute("subjectName",subjectName1);
model.addAttribute("subjectGradeGoal",subjectGradeGoal);
model.addAttribute("caCompletedWorth",caCompletedWorth);
model.addAttribute("subjectResults",subjectResults);
model.addAttribute("maxSubRemMarks",maxSubRemMarks);
model.addAttribute("marksNeededToReachGoal",marksNeededToReachGoal);
model.addAttribute("isGoalPossible",isGoalPossible);
model.addAttribute("highestPossibleGrade",highestPossibleGrade);
return "allSubjects";
}
}
return "allSubjects";
}
我的html类
<>Subject: <h4 th:text="${subjectName}" /> </>
//对于每个属性,我都有这个属性,但我没有在这篇文章中添加它。
最佳答案
假设函数user.getSubject()
返回一个Subject对象的集合或数组,请执行以下操作
控制器方式
@GetMapping("/allSubjects")
public String shoSubjects(@ModelAttribute("subject") @Valid UserRegistrationDto userDto, BindingResult result, Model model) {
Authentication loggedInUser = SecurityContextHolder.getContext().getAuthentication();
String email = loggedInUser.getName();
User user = userRepository.findByEmailAddress(email);
model.addAttribute("subjects", user.getSubject());
return "allSubjects";
}
并认为
<div th:each="subject : ${subjects}">
Subject: <h4 th:text="${subject.subjectName}" />
Subject Grade Goal: <h4 th:text="${subject.subjectGradeGoal}" />
<!-- Other Properties -->
</div>
附言当它返回多个主题时,将您的方法命名为
user.getSubject()
是不好的。最好将方法名称修改为user.getSubjects()
,这通过其名称暗示返回了多个对象。