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

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

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

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Java

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

Spring

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

Q&A

2回答

3821閲覧

Modelに格納したデータを使いまわしたい

Rivermouth

総合スコア19

JSP

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

Java

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

Spring

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

0グッド

0クリップ

投稿2020/09/04 09:50

やりたい事

Modelに格納したデータを他のjspファイルでも使えるようにしたい。
現在はコントローラクラス内で以下のようにデータを格納し、search.jspに渡し、出力しておりますが、

@PostMapping("/search/result") public String postSearch(@RequestParam("sampleId")String sampleId, Model model) { SampleDto list = userService.selectOne(sampleId); model.addAttribute("list", list); return "search/search"; }

userDetail.jspでも以下のようにして表示させたい。

<td><c:out value="${list.sampleId}" /></td> <td><c:out value="${list.sampleName}" /></td>

id検索をし、DBからデータを引っ張ってきて表示し、名前の部分をクリックするとuserDetail.jspへフォワードし、そこで再度idとnameを表示させたい。ただ、上記のように${list.sampleId}としても、何も表示されません。

UserController.java

ackage group.study.dev.sample.search.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import group.study.dev.dto.sample.SampleDto; import group.study.dev.sample.search.service.UserService; import group.study.dev.web.common.controller.AbstractController; @Controller public class UserController extends AbstractController { @Autowired private UserService userService; @RequestMapping(value = "/search") public String goSearch() { return "search/search"; } @GetMapping("/search/insert") public String goInsert() { return "/search/insert"; } @PostMapping("/search/insert") public void postInsert(SampleDto sampleDto) { userService.insert(sampleDto); } @PostMapping("/search/result") public String postSearch(@RequestParam("sampleId")String sampleId, Model model) { SampleDto list = userService.selectOne(sampleId); model.addAttribute("list", list); return "search/search"; } @GetMapping("/search/userDetail") public String goUserDetail() { return "search/userDetail"; } }

userDetail.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>詳細画面</title> </head> <body> <table border="1"> <tr> <th>ID</th> <th>NAME</th> </tr> <tr> <td><c:out value="${list.sampleId}" /></td> <td><c:out value="${list.sampleName}" /></td> </tr> </table> </body> </html>

search.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <% String method = request.getMethod(); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>hoge</title> </head> <body> <% if ("GET".equals(method)) { %> <h1>HOME</h1> <div> <form method="post" action="/web_sample/search/result"> <input type="text" name="sampleId" /> <button type="submit" value="submit">送信</button> </form> </div> <div> <form method="post" action="/web_sample/search/insert"> <button type="submit" value="insert">新規登録</button> </form> </div> <% } else { %> <h1>検索結果</h1> <table border="1"> <tr> <th>ID</th> <th>NAME</th> </tr> <tr> <td><c:out value="${list.sampleId}" /></td> <td><a href="/web_sample/search/userDetail">${list.sampleName}</a></td> </tr> </table> <% } %> </body> </html>

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

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

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

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

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

guest

回答2

0

いくつか実装できていない部分があります。

  1. 検索結果をlistで受け取っていますが、JSPで繰り返し表示できていません。繰り返し表示はJSTLのc:eachを使います。

  2. 検索結果から詳細(選択した1件)を表示するためのパラメータをJSPから渡していないのと、Controllerで受け取るコードがありません。

まずは 1)の実装を完了した上で、2)のControllerにて表示したいUserの番号を受け取るようにし、その1件を再検索した結果をmodelへ格納する手順を試すと良いかと。

投稿2020/09/05 01:41

A-pZ

総合スコア12011

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

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

0

詳細画面にURLパラメータでID渡して再検索すれば良いのでは。
teratailとかも同じと思います。
この質問だと一覧から渡ってきているのは「289651」というIDのみです。

多くのデータは一覧に「見せたい一部の項目だけ」見せますし、一覧情報を全てセッションなどに持っておくのはデータが増えれば増えるほどサーバに負荷をかけます。

ので、一意となる情報だけ渡してその情報で再検索します。

投稿2020/09/04 12:48

m.ts10806

総合スコア80875

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

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

Rivermouth

2020/09/04 14:09

>>詳細画面にURLパラメータでID渡して再検索すれば良いのでは。 userDetailで再検索するという事でしょうか?再検索というとどのようにすればいいのかイメージがつかないです。 >>この質問だと一覧から渡ってきているのは「289651」というIDのみです。 この数字はどこから出てきたのでしょうか?
m.ts10806

2020/09/04 14:16

>再検索 紛らわしければ「再」抜きで考えてください。問い合わせ先のテーブルが同じであるため「再」をつけただけなので。 >この数字 この質問のURLをみてください。 曲がりなりにもWebアプリケーションを作るのであれば、既存のWebアプリケーションがどのようになっているか見て、どのように作られているか考えて想像してください。 自身が作りたいものを示す手順は存在しませんが、ヒントはそこらじゅうに転がっています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問