
初歩的な質問ですいません。
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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) pythonリストの特定の値を表示htmlで表示できない 2 2022/05/14 05:48
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript gasについて 1 2022/05/31 21:51
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- その他(プログラミング・Web制作) python 気象データの取得 2 2023/06/20 23:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaからデータベースに接続 エ...
-
Javaでのエラーについて
-
マイクラ Ender IO 入れたらク...
-
java と javax の違いは?
-
vba クリップボードクリアにつ...
-
プログラムの起動、利用につい...
-
JSPファイルで生じるエラーをど...
-
php、Java(Servlet等)の両方を...
-
IISワーカープロセスが原因でCP...
-
サーブレットとPHPの違い
-
CrystalReportsのバージョン確...
-
MSFormsとは何ですか?
-
ちょっと特異ですが
-
BASICの文法書はありませんか?
-
unzip32.dllの利用について(64b...
-
javaのジェネリックスでTとEの...
-
Eclipseソース開発画面の行番号...
-
サーブレットか、phpか?
-
正規表現について質問です。 カ...
-
MikuMikuDance最新版ダウンロー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Javaでのエラーについて
-
struts2環境構築で不具合が出て...
-
javaからデータベースに接続 エ...
-
propertiesが読み込めなくてnul...
-
java と javax の違いは?
-
JAVA実行時エラーについて教え...
-
JNIでロードするライブラリが見...
-
AntでのJunitの試験
-
log4jを使用し、JAVAのバッチプ...
-
エラーを全て見たい
-
Eclipseにdllがうまく読み込めない
-
System.inをClose()すると例外...
-
applet windowのだしかた
-
java用語集
-
リクエストパラメータを暗号化...
-
-Applet表示でのjava.lang.Clas...
-
[RMI]UnicastRemoteObject.expo...
-
相対パスを絶対パスに。
-
JSFで、マネージビーンに画面の...
-
Tomcatでエラー
おすすめ情報
回答ありがとうございます。
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;}
}