Java Spring Boot Service层无法访问Student对象计算GPA问题求助
存在的问题
- Student类的成绩是独立的私有属性,并非集合类型,不存在
size属性和get(i)方法,无法直接对Student对象循环取值 - StudentService的
submitGrades方法自行创建了空的Student对象,没有接收页面提交的成绩数据,计算逻辑和用户输入完全脱节 - Controller层的提交接口没有调用Service层的计算逻辑,也没有将计算结果传递给结果页面
修正方案
1. 调整StudentService代码
package com.Beispiel.math.student; import org.springframework.stereotype.Component; @Component public class StudentService { // 接收前端传入的Student对象作为入参 public double calculateGpa(Student student){ // 将四个成绩存入数组,即可实现循环遍历 double[] grades = { student.getMathGrade(), student.getGermanGrade(), student.getEnglishGrade(), student.getCodeGrade() }; double sum = 0.0; // 循环累加成绩 for (int i = 0; i < grades.length; i++) { sum += grades[i]; } // 总分除以课程数得到GPA return sum / grades.length; } }
2. 修正StudentController的提交接口
@PostMapping("/register") public String submitGrades(@ModelAttribute("student") Student student, Model model){ log.trace(String.valueOf(student)); // 调用Service层计算GPA double gpa = studentService.calculateGpa(student); // 将GPA存入Model传递给结果页 model.addAttribute("gpa", gpa); return "register_success"; }
3. 结果页新增GPA展示(可选)
在register_success.html的成绩展示区域新增如下代码,即可显示计算得到的GPA:
<span>计算得到的GPA :</span><span th:text="${gpa}"></span>
内容的提问来源于stack exchange,提问作者duki
相关产品推荐
相关产品推荐

