关于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方法就报错了。

http://img.mukewang.com/climg/5dc54e3109f3d55a04270164.jpg

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

http://img.mukewang.com/climg/5dc54efd09ff853805480102.jpg

同学可以使用eclipse自动生成get和set方法,这样就不会有这种问题了。如下所示:

1、在代码编辑器点击鼠标右键,选择Generate getters and setters...http://img.mukewang.com/climg/5dc54f8d09c5439707350634.jpg

2、在弹出的对话框中对复选框进行选择就可以生成get和set方法了

http://img.mukewang.com/climg/5dc550680931d5c105640230.jpg

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




0

0 学习 · 9666 问题

查看课程