关于EL表达式找不到属性的问题
来源:1-12 自由编程
龙丶
2019-11-08 18:15:16
public class Course {
private String id;
private String name;
private String category;
public String getID() {
return id;
}
public void setID(String id) {
this.id=id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name=name;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category=category;
}
public String toString() {
return id+"."+ name+":"+category;
}
}package com.imooc.el;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class CourseServlet
*/
@WebServlet("/course")
public class CourseServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public CourseServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String c =request.getParameter("c");
Course cou =new Course();
cou.setID("S101");
cou.setName("陈杰");
cou.setCategory("理工");
request.setAttribute("course", cou);
request.getRequestDispatcher("/course.jsp").forward(request, response);
}
}<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<ul>
<li>课程ID:${requestScope.course.id }</li>
<li>名称:${requestScope.course.name }</li>
<li>所属方向:${requestScope.course.category }</li>
<li>参数:${param.c }</li>
</ul>
</body>
</html>请问我这错在哪?他报500,说找不到id属性。。。。
1回答
好帮手慕珊
2019-11-08
你好!之所以提示找不到id属性,是因为此处的get和set方法命名有问题。属性名为id,所以方法名应该为getId和setId。注意方法名的命名规则,当方法名由多个单词组成时,第一个单词所有字母均小写,从第二个单词开始,每个单词的首字母大写。EL表达式只能识别满足命名规范的方法,当执行语句${requestScope.course.id }时,会去调用get方法,发现没有getId方法就报错了。

另外,Serlvet中的setID方法名也要修改

同学可以使用eclipse自动生成get和set方法,这样就不会有这种问题了。如下所示:
1、在代码编辑器点击鼠标右键,选择Generate getters and setters...
2、在弹出的对话框中对复选框进行选择就可以生成get和set方法了

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题