我有一个学生班,StudentDao
班,StudentDetails
班级和StudentController
学生班有以下实例:
private String studentId;
private String studentName;
private String studentGrade;
StudentDao
从DB获取这些详细信息,StudentDetails
Class按以下方法返回这些详细信息的列表: -
public List<Student> getSpecificStudentInfo(String studentId)
{
List<Student> studentInfo=studentDao.getSpecificStudentInfo(studentId);
return studentInfo;
}
在我的控制器中,我使用HashMap获取学生详细信息,如
public Map<String, Object> referenceData(HttpServletRequest req)throws ServletException, IOException
{
String studentId=req.getParameter("studentId");
Map<String, Object> studentRecord = new HashMap<String, Object>();
studentRecord.put("students",studentDetails.getSpecificStudentInfo(studentId));
return studentRecord;
}
我可以使用Jsp
,students.studentName
等在students.studentGrade
中显示这些值,这是一项要求。
但我的问题是我想在studentName
方法中使用studentGrade
和referenceData
进一步使用{{1}}方法(在返回语句之前)但我没有以正确的方式使用它
答案 0 :(得分:1)
我不认为我理解你的问题。在referenceData中,您已经有了来自请求的studentId。您仍然可以使用循环列表提取等级。
public Map<String, Object> referenceData(HttpServletRequest req)throws ServletException, IOException
{
String studentId=req.getParameter("studentId");
Map<String, Object> studentRecord = new HashMap<String, Object>();
List<Student> listOfStudents = studentDetails.getSpecificStudentInfo(studentId);
String studentGrad = getGradeFor(studentId);
studentRecord.put("students",listOfStudents);
return studentRecord;
}
/* check nulls, empty list etc. */
public String getGradeFor(List<Student> listOfStudent, String id) {
for (Student student: listOfStudent) {
if (student.getId().equals(id)) return student.getGrade();
}
return null;
}
或者您可以更有效地构建数据库查询,因此您只能在列表中获得一个对象。这将是你正在寻找的学生。