cyufeng
2018-08-11 23:42:19
JdbcTemplate得到List<实体>后,将List传入Jsp页面用El表达式输出时错误
这个问题困扰了我一天,虽然不难,但是非常的恶心,下面来详细的说一下
大致的问题是这样的,我用JdbcTemplate得到我的实体List,在Controller中用ModeAndView传入前端jsp中页面中用El表达式将实体中的数据循环读取出来的时候报错。最后发现是大小写的问题,因为在实体中的变量名首字母不能为大写,所以读不出数据。
以下为详情
这是我的实体类
public class x_teacher{
/**
* 教师实体
*/
private String Tea_Id;
private String Tea_Code;
private String Tea_Name;
private String Tea_Username;
private String Tea_Password;
private String Tea_Address;
private String Dr;
public String getTea_Id() {
return tea_Id;
}
public void setTea_Id(String tea_Id) {
this.tea_Id = tea_Id;
}
public String getTea_Code() {
return tea_Code;
}
public void setTea_Code(String tea_Code) {
this.tea_Code = tea_Code;
}
public String getTea_Name() {
return tea_Name;
}
public void setTea_Name(String tea_Name) {
this.tea_Name = tea_Name;
}
public String getTea_Username() {
return tea_Username;
}
public void setTea_Username(String tea_Username) {
this.tea_Username = tea_Username;
}
public String getTea_Password() {
return tea_Password;
}
public void setTea_Password(String tea_Password) {
this.tea_Password = tea_Password;
}
public String getTea_Address() {
return tea_Address;
}
public void setTea_Address(String tea_Address) {
this.tea_Address = tea_Address;
}
public String getDr() {
return dr;
}
public void setDr(String dr) {
this.dr = dr;
}
}
这是我的Controller
@Autowired
private JdbcTemplate jdbcTemplate;
/*
* 查询所有教师数据
*
*/
public List<x_teacher> FindAllTeacher() {
String sql = "select * from x_teacher";
try {
return jdbcTemplate.query(sql,new BeanPropertyRowMapper<x_teacher>(x_teacher.class));
} catch (Exception e) {
throw new RuntimeException("查询教师数据失败");
}
}
这是我的Service。
@Autowired
private x_TeacherDao x_teacherDto;
/*
*
* 2018.8.6
*遍历教师信息表
*/
public List<x_teacher> FindAllTeacher()
{
return x_teacherDto.FindAllTeacher();
}
这是我的Dao。
@Autowired
private JdbcTemplate jdbcTemplate;
/*
* 查询所有教师数据
*
*/
public List<x_teacher> FindAllTeacher() {
String sql = "select * from x_teacher";
try {
return jdbcTemplate.query(sql,new BeanPropertyRowMapper<x_teacher>(x_teacher.class));
} catch (Exception e) {
throw new RuntimeException("查询教师数据失败");
}
}
这是我的jsp,利用El表达式循环输出。
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<c:forEach items="${requestScope.teahcerdata }" var="data">
<tr>
<td>${data.Tea_Id}</td>
<td>${data.Tea_Code}</td>
<td>${data.Tea_Name}</td>
<td>${data.Tea_Username}</td>
</tr>
</c:forEach>
就此代码部分结束。
实际输出时报错为
大致的意思为,在TeacherInformation.jsp的118行出现错误,com.school.entity.x_teacher中没有找到Tea_Id这个变量,但是返回去看看自己的实体类,明明是有这个变量是存在的。
实际上是因为el表达式的变量的首字母是不可以为大写的。
El表达式的原理:el表达式的“.”方法是通过调用get方法来得到数据的。例如上面的${data.Tea_Id},翻译过来就是data.getTea_Id()。就能得到Tea_Id。
但是有一个问题就是,这里变量的首字母如果是小写,那么El表达式会自动将首字母大写。例如${data.tea_Id},会自动将t大写,翻译过来同样是data.getTea_Id()。
但是如果你的变量本身就是大写,那么他将报错。
以上。
评论




最近浏览
