关于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方法了
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题