プロが教えるわが家の防犯対策術!

初歩的な質問ですいません。
DAOのFindAll()で取得したデータをServletでリクエストスコープに保存して
それをjspで表示させたいのですが、以下のようなエラーが表示されて
困っています。
どなたかご教授お願いいたします。
----------------------------------------------
メッセージ java.lang.NumberFormatException: For input string: "Name"

説明 The server encountered an internal error that prevented it from fulfilling this request.
例外
org.apache.jasper.JasperException: java.lang.NumberFormatException: For input string: "Name"
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:549)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:470)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
servlet.EmployeeListServlet.doPost(EmployeeListServlet.java:81)
javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
原因
java.lang.NumberFormatException: For input string: "Name"
java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
java.lang.Integer.parseInt(Integer.java:492)
java.lang.Integer.parseInt(Integer.java:527)
javax.el.ListELResolver.coerce(ListELResolver.java:163)
javax.el.ListELResolver.getValue(ListELResolver.java:51)
org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:104)
org.apache.el.parser.AstValue.getValue(AstValue.java:183)
org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
以下略
--------------------------------------------------------------------------------------------------
○Servletはこんな感じです
package servlet;
----
import、@Webservletは略
----

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

//フォワード
RequestDispatcher dispatcher = request.getRequestDispatcher("/employeeList.jsp");
dispatcher.forward(request, response);

//社員情報を取得してリクエストスコープに保存
Select_employee_date_logic Select_employee_date_logic =
new Select_employee_date_logic();
List<Employee_date> employee_date_list = Select_employee_date_logic.execute();
request.setAttribute("employee_date_list", employee_date_list);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

//リクエストパラメータの取得
request.setCharacterEncoding("UTF-8");
String loginID = request.getParameter("loginID");
String pass = request.getParameter("pass");

//ログイン処理の実行
Login loginuser = new Login(loginID, pass);
LoginLogic bo = new LoginLogic();
boolean result = bo.execute(loginuser);

//ログイン処理の成否によって処理を分岐
if(result){//ログイン成功時
//セッションスコープにログインIDパスワードを保存
HttpSession session = request.getSession();
session.setAttribute("loginID", loginID);
session.setAttribute("pass", pass);

//情報を取得してリクエストスコープに保存
Select_employee_date_logic Select_employee_date_logic =
new Select_employee_date_logic();
List<Employee_date> employee_date_list = Select_employee_date_logic.execute();
request.setAttribute("employee_date_list", employee_date_list);

//フォワード(一覧)
RequestDispatcher dispatcher = request.getRequestDispatcher("/employeeList.jsp");
以下略

jspで
<td>${employee_date_list.Name}</td>
と記載して表示させようとしているのですが、
原因がよくわからなくて困っています。
詳しいかたよろしくお願いいたします。

質問者からの補足コメント

  • つらい・・・

    回答ありがとうございます。
    public List<Employee_date> findAll() {

    List<Employee_date> employee_date_list = new ArrayList<Employee_date>();

    while(rs.next()){
    int Department = rs.getInt("department");
    String Name = rs.getString("name");

    Employee_date employee_date = new Employee_date( Department, Name);
    employee_date_list.add(employee_date);

      補足日時:2017/03/30 03:06
  • つらい・・・

    上記のDAOのインスタンスを作成してる
    Nameインスタンスを指定しているつもりです。
    それを以下のロジックで一度取得して
    それをServletにimportして使っています。

    package Model;

    import java.util.List;

    import dao.Employee_date_DAO;

    public class Select_employee_date_logic {

    public List<Employee_date> execute(){
    Employee_date_DAO dao = new Employee_date_DAO();
    List<Employee_date> employee_date_list = dao.findAll();


    return employee_date_list;

      補足日時:2017/03/30 03:12
  • つらい・・・

    _11さん回答ありがとうございます。
    たぶん以下の内容かと思われます。

    package Model;

    import java.io.Serializable;

    public class Employee_date implements Serializable{
    private int department;//事業部
    private String name;//名前


    public Employee_date(int department, String name){
    this.department = department;
    this.name = name;
    }
    public int getDepartment(){return department;}
    public String getName(){return name;}
    }

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/03/31 03:15

A 回答 (4件)

public class Employee_date implements Serializable{


private int department;//事業部
private String name;//名前

の部分から見て、

Employee_date 内の変数nameを以下のEL式で呼んで表示しようとしているのだと思うのですが、それだと
<td>${employee_date_list.Name}</td>
と書いてあなたが表示させようとしている部分で書くべきは

<td>${employee_date_list[0].name}</td>

となるのではないでしょうか リストのどの位置のEmployee_dateインスタンスを読むかという情報(添字)がなく、変数名nameがNameになっているのです

いえ もちろんこれだと employee_date_listの内容の一番目に入っているEmployee_dateのnameの内容しか表示されません 全て表示したいのであれば、employee_date_list[0].name~employee_date_list[employee_date_list.size()].name 間の 全てを表示するしくみが必要です ですが とりあえずエラー無しで表示できるかどうかを確かめるために

<td>${employee_date_list[0].name}</td>
を使って、表示が部分的にでも可能かどうか確かめて見てはいかがでしょうか

後、Employee_dateがBeanだとすると
<%@page import="任意のパッケージ.Employee_date"%>がJSPの先頭に必要だと思います
    • good
    • 0
この回答へのお礼

エラー解消されました。\(TvT)/
ご指摘通りの問題でした。以下の表示にして解消しました。
--------------------------
<td>${employee_date_list[0].name}</td>
--------------------------
親切に全データを取得するためのご指摘までいただけて
うれしいです。
本当にありがとうございました

お礼日時:2017/04/01 10:44

Employee_date employee_date = new Employee_date( Department, Name);


でコンストラクタに入れる時にはNameという変数を使用しているのかも知れませんが、
Employee_date クラスの中でName によって初期化された変数はNameという名前を使用しているのでしょうか?
この回答への補足あり
    • good
    • 0

<td>${employee_date_list.Name}</td>の


Name というものは
どこから出てきたのでしょうか
employee_date_list[0],employee_date_list[1]などではないのですか
    • good
    • 0

エラーメッセージ「NumberFormatException」をキーワードに検索すると、すぐに以下のURLがヒットします



http://www.atmarkit.co.jp/ait/articles/0606/22/n …

これを読めば、原因がわかると思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!