javax.el.MethodNotFoundException: 메소드를 찾을 수 없음: class java.lang.String.getName()

멍게·2023년 4월 5일
0

JSP error note

목록 보기
5/5

발생 상황

Vector를 이용하여 데이터베이스에 있는 멤버들을 모아서 forEach문으로 테이블 작성하려고 했으나 getName()을 찾을 수 없다는 에러 발생함.

memberDelete.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<form action="memberDelete.do" method="post" name="frm">

		<table>
			<tr>
				<th>이름</th>
				<th>아이디</th>
				<th>비밀번호</th>
				<th>이메일</th>
				<th>전화번호</th>
				<th>관리자 여부</th>
			</tr>

			<c:forEach var="member" items="${mlist } ">
				<tr>
					<td>${member.getName() }</td>
					<td>${member.getUserid() }</td>
					<td>${member.getPwd() }</td>
					<td>${member.getEmail() }</td>
					<td>${member.getPhone() }</td>
					<td>${member.getAdmin() }</td>
				</tr>
			</c:forEach>

			<tr>
				<td>
					<select name="userid">
						<c:forEach var="mid" items="${mlist }">
							<option value="${mid.getUserid() }">${mid.getUserid() }</option>
						</c:forEach>
					</select>
					<input type="submit" value="삭제">
				</td>
			</tr>

		</table>
	</form>

</body>
</html>

memberDeleteServlet

package com.saeyan.controller;

import java.io.IOException;
import java.util.Vector;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.saeyan.dao.MemberDAO;
import com.saeyan.dto.MemberVO;

/**
 * Servlet implementation class memberDelete
 */
@WebServlet("/memberDelete.do")
public class memberDelete extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public memberDelete() {
		super();
		// TODO Auto-generated constructor stub
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
		request.setCharacterEncoding("utf-8");
		MemberDAO mDao = MemberDAO.getInstance();
		Vector<MemberVO> mlist = mDao.memberList();
		request.setAttribute("mlist", mlist);
		System.out.println(mlist);

		RequestDispatcher rd = request.getRequestDispatcher("member/memberDelete.jsp");
		rd.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		// TODO Auto-generated method stub

		request.setCharacterEncoding("UTF-8");
		String url = "login.do";
		String userid = request.getParameter("userid");
		MemberDAO mDAO = MemberDAO.getInstance();
		mDAO.deleteMember(userid);
		response.sendRedirect(url);

	}

}

MemberDAO

public Vector<MemberVO> memberList() {
		String sql = "select * from member";
		Vector<MemberVO> mlist = new Vector<>();
		Connection conn = null;
		PreparedStatement pstmt = null;
		ResultSet rs = null;
		
		try {
			conn = getConnection();
			pstmt = conn.prepareStatement(sql);
			rs = pstmt.executeQuery();
			
			while (rs.next()) {
				MemberVO mVo = new MemberVO();
				mVo.setName(rs.getString("name"));
				mVo.setUserid(rs.getString("userid"));
				mVo.setPwd(rs.getString("pwd"));
				mVo.setEmail(rs.getString("email"));
				mVo.setPhone(rs.getString("phone"));
				mVo.setAdmin(Integer.parseInt(rs.getString("admin")));
				mlist.add(mVo);
			}
		} catch (Exception e) {
			System.out.println(e);
		} finally {
			try {
				if (rs != null)
					rs.close();
				if (pstmt != null)
					pstmt.close();
				if (conn != null)
					conn.close();

			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return mlist;
	}
    
    
	public int deleteMember(String userid) {
		int result = -1;
		String sql = "delete from member where userid=?";
		PreparedStatement pstmt = null;
		Connection conn = null;

		try {
			conn = getConnection();
			pstmt = conn.prepareStatement(sql);
			pstmt.setString(1, userid);
			result = pstmt.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			try {
				if (pstmt != null)
					pstmt.close();
				if (conn != null)
					conn.close();
			} catch (Exception e) {
			} finally {
			}
		}
		return result;

	}

해결

<c:forEach var="member" items="${mlist }"> //띄워쓰기 없이 수정 후 문제해결함!

빨간색으로 표시한 부분 공백이 있어 el.Method 에러가 발생했다. 3/31일에 에러 발생하여 반에서 잘하는 친구들에게 물어보고 챗지피티에도 물어보다가 4/5일 코드 다시 확인하던 중 에러 발생부위 발견해서 해결했다. 추후 에러 발생 시 띄워쓰기도 다시 봐야되겠다.

profile
똑부되자 🔥👩‍💻

0개의 댓글