質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

Q&A

解決済

1回答

5522閲覧

EL式でArrayListの中身を表示したい

inumaeda

総合スコア12

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

0グッド

0クリップ

投稿2020/01/12 10:12

前提・実現したいこと

ArrayListに格納したインスタンスの中身(list.numberとlist.moji)をEL式を使って表示したいです。

EL式でArrayListの中身を表示するコードを書いたところ、NumberFormatException: For input string: "number"
のエラーメッセージが発生しました。

エラーを解消する方法をご教示いただけると幸いです。

発生している問題・エラーメッセージ

例外 org.apache.jasper.JasperException: [/WEB-INF/jsp/list.jsp] の処理中に行番号 [10] で例外が発生しました。 7: <title>EL式のテスト</title> 8: </head> 9: <body> 10: ${listAttribute.number} 11: ${listAttribute.moji} 12: </body> 13: </html> Stacktrace: org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:625) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:514) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) servlet.ListServlet.doGet(ListServlet.java:51) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) 根本原因 java.lang.NumberFormatException: For input string: "number" java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) java.base/java.lang.Integer.parseInt(Integer.java:652) java.base/java.lang.Integer.parseInt(Integer.java:770) javax.el.ListELResolver.coerce(ListELResolver.java:150) javax.el.ListELResolver.getValue(ListELResolver.java:67) org.apache.jasper.el.JasperELResolver.getValue(JasperELResolver.java:113) org.apache.el.parser.AstValue.getValue(AstValue.java:169) org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:190) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:701) org.apache.jsp.WEB_002dINF.jsp.list_jsp._jspService(list_jsp.java:124) org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) servlet.ListServlet.doGet(ListServlet.java:51) javax.servlet.http.HttpServlet.service(HttpServlet.java:634) javax.servlet.http.HttpServlet.service(HttpServlet.java:741) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

該当のソースコード

Java

1 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 2 request.setCharacterEncoding("UTF-8"); 3 4 ListTest lt = new ListTest(); 5 lt.setMoji("あいうえお"); 6 lt.setNumber(3); 7 8 //ArrayListに格納 9 List<ListTest> list = new ArrayList<>(); 10 list.add(lt); 11 12 // セッションスコープにコメントリストを保存 13 HttpSession session = request.getSession(); 14 session.setAttribute("listAttribute", list); 15 16 RequestDispatcher rd =request.getRequestDispatcher("/WEB-INF/jsp/list.jsp"); 17 rd.forward(request, response); 18 }

Java

1package model; 2 3public class ListTest { 4 private String moji; 5 private int number; 6 7 public String getMoji() { 8 return moji; 9 } 10 public void setMoji(String moji) { 11 this.moji = moji; 12 } 13 public int getNumber() { 14 return number; 15 } 16 public void setNumber(int number) { 17 this.number = number; 18 } 19}

jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<!DOCTYPE html> 4<html> 5<head> 6<meta charset="UTF-8"> 7<title>EL式のテスト</title> 8</head> 9<body> 10${listAttribute.number} // この行でエラーが発生します。 11${listAttribute.moji} 12</body> 13</html>

試したこと

試しにjspを以下のように変更してみました。

変更前 ${listAttribute.number} ${listAttribute.moji} ↓ 変更後 ${listAttribute}

するとエラーは出ずに、下記のようにインスタンスのアドレス?が表示されました。
[model.ListTest@5ac1a2e8]
インスタンスは取得できているようです。


また以下のように存在しないプロパティを指定してみると同じエラーが出ました。

変更前 ${listAttribute.number} ↓ 変更後 ${listAttribute.hogehoge}

補足情報(FW/ツールのバージョンなど)

Java 13.0.1
Eclipse 2019-9

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

EL式ではないのですが、JSTLのforEach文を利用して解決できました。
jspを以下のように変更しました。

jsp

1<%@ page language="java" contentType="text/html; charset=UTF-8" 2 pageEncoding="UTF-8"%> 3<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 4<!DOCTYPE html> 5<html> 6<head> 7<meta charset="UTF-8"> 8<title>EL式のテスト</title> 9</head> 10<body> 11 12<c:forEach var="list" items="${listAttribute}"> 13数字:<c:out value="${list.number}"/> 14文字:<c:out value="${list.moji}"/> 15</c:forEach> 16 17</body> 18</html>

投稿2020/01/13 01:17

inumaeda

総合スコア12

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問