почему я получаю org.apache.jasper.JasperException? - PullRequest
0 голосов
/ 12 марта 2012

Когда я запускаю следующий сервлет:

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;

public class Controller extends HttpServlet {
@Override
public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException {
    Bean bean = new Bean(); 
    bean.setName("Suhail Gupta");
    request.setAttribute("Name", bean);
    RequestDispatcher rd = request.getRequestDispatcher("index.jsp");
    rd.forward(request, response);
  }
}

исключение:

HTTP Status 500 -

type Exception report

message

descriptionThe server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: PWC6054: Cannot find any information on property 'Name' in a bean of type 'Bean'

note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 3.1.1 logs.

генерируется. Я не понимаю причину этого.

Ниже приводится класс Bean :

public class Bean {

private String Name = null;

public void setName(String n) {
    Name = n;
}

public String getName() {
    return Name;        
  }
}

и это index.jsp страница:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>JSP Page</title>
</head>
<body>
    <jsp:useBean id="name" class="Bean" scope="request" />
    Person created by the Servlet : <jsp:getProperty name="name" property="Name" />
</body>
</html>

Я не могу найти причину исключения.

1 Ответ

3 голосов
/ 12 марта 2012
  • свойство должно быть в нижнем регистре private String name - это продиктовано соглашением java и стандартом javabeans
  • тег должен использовать строчные буквы property="name" - javabeans, снова
  • имя бина не должно быть Name, это сбивает с толку. Сделать это nameBean (желательно в нижнем регистре)
  • у вашего класса должен быть пакет. пакет по умолчанию вызывает проблемы.
  • вместо тегов jsp: вы можете просто использовать EL: ${nameBean.name} разрешит правильное значение.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...