cyufeng的gravatar头像
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>

就此代码部分结束。

实际输出时报错为

JdbcTemplate得到List<实体>后,将List传入Jsp页面用El表达式输出时错误

大致的意思为,在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()。

但是如果你的变量本身就是大写,那么他将报错。

以上。

 


打赏

已有1人打赏

最代码官方的gravatar头像
最近浏览
624029521  LV6 2023年10月27日
最呆码 2019年5月21日
暂无贡献等级
我是太阳haha  LV1 2019年4月18日
hohahei  LV4 2018年12月31日
景哥GG 2018年12月25日
暂无贡献等级
丶右转  LV11 2018年12月24日
我们有一颗向往的心  LV2 2018年12月17日
likezhensan  LV8 2018年12月6日
kitefly  LV2 2018年12月6日
zhengkkk  LV3 2018年11月28日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友