问题遇到的现象和发生背景
通过查询所有教师,将教师信息和学院名称展示到JSP页面中,
无法通过EL表达式获取到教师的属性值,但是可以获取到教师对象里面嵌套的学院实体类对象里的属性值
问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果
教师实体类
public class Teacher {
private int tId;
private String tName;
private String tGender;
private String tPhone;
private int tAcid;
private Academy academy;
}
教师DAO接口
//查询所有的教师
public List<Teacher> queryAllTeacher();
控制器的代码
@RequestMapping("/showAllTeacher")
public String showAllTeacher(HttpServletRequest request){
List<Teacher> teachers = teacherService.queryALLTeacher();
System.out.println(teachers);
request.setAttribute("List2",teachers);
return"/pages/teacher/listTeacher.jsp";
}
XML代码
<resultMap id="TeacherMap2" type="Teacher">
<id column="t_id" property="tId"/>
<result column="t_name" property="tName"/>
<result column="t_gender" property="tGender"/>
<result column="t_phone" property="tPhone"/>
<result column="t_acid" property="tAcid"/>
<association property="academy" javaType="Academy">
<id column="ac_id" property="acId"/>
<result column="ac_name" property="acName"/>
</association>
</resultMap>
<select id="queryAllTeacher" resultMap="TeacherMap2">
select t_id,t_name,t_gender,t_phone,t_acid ,ac_id,ac_name from teacher
inner join academy
on t_acid = ac_id
</select>
JSP页面代码
<form action="Teacher/showAllTeacher"method="post">
<div class="condition">
<input type="text" name="tId" placeholder="请输入工号" value="${param.tId}"/>
<input type="text" name="stuName" placeholder="请输入姓名" value="${param.tName}"/>
<button type="submit">
<i class="fa fa-search"></i>
查询
</button>
</div>
</form>
<table class="tableList">
<thead>
<tr>
<th>工号</th>
<th>姓名</th>
<th>性别</th>
<th>电话</th>
<th>学院</th>
<th width="120px">操作</th>
</tr>
</thead>
<c:forEach items="List2" var="tList">
<td>${tList.tId}</td>
<td>${tList.academy.acName}</td>
</c:forEach>
</table>
可以通过${tList.academy.acName}获取学院的名称
但是无法通过${tList.tId}获取教师Id
尽管我采用下标遍历的方法也是无效
<c:forEach items="${List2}" var="tList">
<td>${tList[0].tId}</td>
<td>${tList.academy.acName}</td>
</c:forEach>
在页面中可以通过${List2[0]}获取到集合中第一个教师对象的值
${List2[0]}
<c:forEach items="${List2}" var="tList">
<td></td>
<td>${tList.academy.acName}</td>
</c:forEach>
但是${List2[0].tId}却是什么都访问不了