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

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

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

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

828閲覧

JavaのSpringを使いデータベースから取得した値を JSPに渡して画面に表示させたいです。

momokawa

総合スコア10

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

1クリップ

投稿2022/08/07 08:28

前提

JavaのSpringを使いデータベースから取得した値を
JSPに渡して画面に表示させたいです。

java.lang.NumberFormatExceptionエラーとなり、jspでの表示ができません。
プロパティ名の付け方がおかしいのでしょうか…
どうかご解答をお願い致します。

実現したいこと

  • "LAST_NAME"というテーブルから"LAST_NAME"というカラムのデータを1件取得し、"input.jsp"にJSTLで表示させたいです。
  • 学習用のため「STUDENTデータ作成画面」なるものを作っています。
  • 現在は動きの確認のために、LAST_NAMEのみ取得していますが、sql文は変更して複数のデータを取得します。

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

エラーメッセージ HTTPステータス 500 - Internal Server Error Type Exception Report メッセージ java.lang.NumberFormatException: For input string: "studentName" 説明 The server encountered an unexpected condition that prevented it from fulfilling the request. 例外 org.apache.jasper.JasperException: java.lang.NumberFormatException: For input string: "studentName" org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:560) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:476) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:170) org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314) org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1325) org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1069) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1008) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)

該当のソースコード

package jp.co.----.controller; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import jp.co.----.dto.Student; import jp.co.----.service.CreateStudentService; //http://localhost:8080/createStudent/inputPage.html @Controller public class CreateController { @Autowired private CreateStudentService createStudentService; @RequestMapping("/inputPage") public String show() { return "input"; } @RequestMapping("/getStudent") public ModelAndView getStudentInfo() { List<Student> studentInfo = createStudentService.createStudent(); return new ModelAndView("input", "studentInfo", studentInfo); } }
package jp.co.----.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import jp.co.----.dao.StudentDao; import jp.co.----.dto.Student; @Service public class CreateStudentService { @Autowired private StudentDao studentDao; public List<Student> createStudent() { List<Student> studentInfo = studentDao.getRandom(); return studentInfo; } }
package jp.co.----.dao; import java.sql.ResultSet; import java.sql.SQLException; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.BeanPropertyRowMapper; import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate; import org.springframework.stereotype.Repository; import jp.co.----.dto.Student; @Repository public class StudentDao { @Autowired private NamedParameterJdbcTemplate temp; private class StudentRowMapper extends BeanPropertyRowMapper<Student>{ @Override public Student mapRow(ResultSet rs, int rowNum) throws SQLException{ Student student = new Student(); student.setStudentName(rs.getString("LAST_NAME")); return student; } } //ランダムでDBから取得する public List<Student> getRandom(){ String sql = "select * from LAST_NAME "; List<Student> studentInfo = this.temp.query(sql, new StudentRowMapper()); return studentInfo; } }
package jp.co.----.dto; public class Student { private String studentName; public String getStudentName() { return studentName; } public void setStudentName(String studentName) { this.studentName = studentName; } }
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>入力ページ</title> </head> <body> <form action="" method="post"> STUDENT_NO <input type="text"> <br> NAME <input type="text" name="name" value="<c:out value="${studentInfo.studentName}"/>"> <br> AGE <input type="text" name="age" value=""> <br> ADDRESS <input type="text" name="address" value=""> <br> CLASS_NO <input type="text" name="class" value=""> <br> <input type="submit" value="登録"> <a href="/createStudent/getStudent.html">ランダム取得</a> </form> </body> </html>

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

ここにより詳細な情報を記載してください。

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

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

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

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

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

jimbe

2022/08/07 09:36

studentInfo は List<Student> のように思いますが、 studentInfo.studentName でアクセスできるのでしょうか?
momokawa

2022/08/07 09:47

コメントありがとうございます。 controllerクラスで、 return new ModelAndView("input", "studentInfo", studentInfo); によって"studentInfo"という名前でsetAttributeしていることになるので、 属性名 studentInfo studentモデルクラスのプロパティ名 studentName という認識で作成しました。
jimbe

2022/08/07 15:10

普通に java であれば、 List<Student> の中のデータにアクセスするには studentInfo.get(i).getStudentName() と言ったように List の何番目の Student オブジェクトなのかを get(i) で指定しなければなりませんが、 jsp において studentInfo.studentName というだけで(何番目のデータなのかを指定しなくても)データを取り出せるでしょうか。
guest

回答1

0

自己解決

ご指摘にあった通り、Listに対して番号も指定せず、for文で回すこともなく...というのが原因だったと思われます。
<c:out value="${studentList[0].studentName}"/> にしてみたら、取得できました。
ありがとうございました。

投稿2022/08/08 12:50

momokawa

総合スコア10

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問