
初歩的な質問ですいません。
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>
と記載して表示させようとしているのですが、
原因がよくわからなくて困っています。
詳しいかたよろしくお願いいたします。

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

No.3
- 回答日時:
Employee_date employee_date = new Employee_date( Department, Name);
でコンストラクタに入れる時にはNameという変数を使用しているのかも知れませんが、
Employee_date クラスの中でName によって初期化された変数はNameという名前を使用しているのでしょうか?

No.2
- 回答日時:
<td>${employee_date_list.Name}</td>の
Name というものは
どこから出てきたのでしょうか
employee_date_list[0],employee_date_list[1]などではないのですか
No.1
- 回答日時:
エラーメッセージ「NumberFormatException」をキーワードに検索すると、すぐに以下のURLがヒットします
http://www.atmarkit.co.jp/ait/articles/0606/22/n …
これを読めば、原因がわかると思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleログインボタンのデザイ...
-
プログラミングの問題です。大...
-
JDONWROADER2のエラー修復
-
スプレッドシートからリマイン...
-
googleスプレッドシートのスク...
-
googleスプレッドシートのGASに...
-
Verilogについて質問です。この...
-
論理回路設計をVerilogで行う問...
-
ゲーム開発の入門書を探しています
-
jdbcでinsert,delete,createをe...
-
session,requestはjspで未定義...
-
サーブレットをapacheで公開す...
-
下記のリストならno002が含まれ...
-
is this even a thing?
-
JAの支部?地域の農協のカード...
-
えハミルトン路と全域木のちが...
-
CSV出力を画面から選択したデー...
-
ショートカットキーについて
-
list の空は [] ってあわらすのに
-
あんまりお料理しないのに台所...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaでのエラーについて
-
javaからデータベースに接続 エ...
-
java と javax の違いは?
-
struts2環境構築で不具合が出て...
-
マイクロソフトのコミュミティ...
-
autoCAD2017で面積を計測して、...
-
Win32 API メニューのfType,fMa...
-
Tomcatでエラー
-
DBから全権検索したデータをjsp...
-
propertiesが読み込めなくてnul...
-
マイクラ Ender IO 入れたらク...
-
マイクラがクラッシュします。
-
System.inをClose()すると例外...
-
JasperExceptionのエラーログの...
-
$_SERVER['HTTP_USER_AGENT'] ...
-
JSFで、マネージビーンに画面の...
-
javacのコンパイルでファイルが...
-
BufferedInputStreamのreadメソ...
-
log4jを使用し、JAVAのバッチプ...
-
【javadoc】パッケージを一括で...
おすすめ情報
回答ありがとうございます。
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);
上記の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;
_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;}
}