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

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

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

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

Java

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

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

Spring

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

5357閲覧

入力画面と出力結果を同じ画面に表示させたい

Rivermouth

総合スコア19

JSP

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

Java

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

タグ

特殊な記法により文書に埋め込む形で記述される付加情報をタグと呼びます。文書構造や書式、文字飾りなどを指示したり、画像や他の文書へのリンクを埋め込むことができる。

Spring

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2020/08/23 07:12

色々な入力項目から入力した入力データを送信すると、同一画面上にそれらのデータを出力させられるようなプログラムを作りたいのですが、なかなか上手くいきませんので、こちらに質問させて頂きます。

現在のソースコードだと、入力画面に既に出力結果(初期値)が表示されてしまっております。入力画面では結果や初期に入っているデータを表示させないようにし、送信が押されたタイミングで入力項目の下の方に入力したデータを表示させたいです。

そのようなタグややり方を教えてはいただけないでしょうか?

TestController.java

package group.study.dev.sample.test; import java.util.LinkedHashMap; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class TestController { @ModelAttribute("UM") public SearchForm init() { SearchForm sf = new SearchForm(); sf.setTxt("test"); sf.setRdo1("r1"); sf.setRdo2("B"); return sf; } public void setMap(Model model) { LinkedHashMap<String, String> map = new LinkedHashMap<>(); map.put("A", "その1"); map.put("B", "その2"); model.addAttribute("map", map); } @RequestMapping(value = "/", method = RequestMethod.GET) public String loginGet(Model model) { init(); setMap(model); SearchForm form = new SearchForm(); model.addAttribute(form); return "search/home"; } @RequestMapping(value = "/home", method = RequestMethod.POST) public String loginPost(SearchForm form, Model model) { System.out.println(form.toString()); setMap(model); //System.out.println("modelに登録されているオブジェクトを全て表示"); /* for (Map.Entry<String, Object> e : model.asMap().entrySet()) { System.out.println(e); } */ return "search/home"; } }

SearchForm.java

package group.study.dev.sample.test; public class SearchForm { private String txt; private String area; private String sel1; private String sel2; private boolean chk1; private String chk2; private String rdo1; private String rdo2; private String pass; private String hdn; public String getTxt() { return txt; } public void setTxt(String txt) { this.txt = txt; } public String getArea() { return area; } public void setArea(String area) { this.area = area; } public String getSel1() { return sel1; } public void setSel1(String sel1) { this.sel1 = sel1; } public String getSel2() { return sel2; } public void setSel2(String sel2) { this.sel2 = sel2; } public String getChk2() { return chk2; } public void setChk2(String chk2) { this.chk2 = chk2; } public String getRdo1() { return rdo1; } public void setRdo1(String rdo1) { this.rdo1 = rdo1; } public String getPass() { return pass; } public void setPass(String pass) { this.pass = pass; } public String getHdn() { return hdn; } public void setHdn(String hdn) { this.hdn = hdn; } public boolean isChk1() { return chk1; } public void setChk1(boolean chk1) { this.chk1 = chk1; } public String getRdo2() { return rdo2; } public void setRdo2(String rdo2) { this.rdo2 = rdo2; } }

home.jsp

<%@page import="group.study.dev.sample.test.SearchModel"%> <%@page import="group.study.dev.sample.test.TestController"%> <%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%> <%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <html> <head> <title>ログイン</title> </head> <body> <spring:url value="/home" var="url" htmlEscape="true" /> <form:form action="${url}" method="POST" modelAttribute="UM"> <form:input path="txt" /> <hr /> <form:textarea path="area" /> <hr /> <form:select path="sel1" items="${map}" /> <hr /> <form:select path="sel2" multiple="true"> <form:option value="op1">オプション</form:option> <form:options items="${map}" /> </form:select> <hr /> <form:checkbox path="chk1" label="チェック" /> <hr /> <form:checkboxes path="chk2" items="${map}" /> <hr /> <form:radiobutton path="rdo1" label="ラジオ1" value="r1" /> <form:radiobutton path="rdo1" label="ラジオ2" value="r2" /> <hr /> <form:radiobuttons path="rdo2" items="${map}" /> <hr /> <form:password path="pass" /> <hr /> <form:hidden path="hdn" /> <BR /> <input type="submit" value="テスト" /> <BR /> <BR /> </form:form> <div><span><c:out value="${searchForm.txt}"/></span></div> <div><span><c:out value="${searchForm.area}"/></span></div> <div><span><c:out value="${searchForm.sel1}"/></span></div> <div><span><c:out value="${searchForm.sel2}"/></span></div> <div><span><c:out value="${searchForm.chk1}"/></span></div> <div><span><c:out value="${searchForm.chk2}"/></span></div> <div><span><c:out value="${searchForm.rdo1}"/></span></div> <div><span><c:out value="${searchForm.rdo2}"/></span></div> <div><span><c:out value="${searchForm.pass}"/></span></div> <div><span><c:out value="${searchForm.hdn}"/></span></div> </body> </html>

よろしくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

java

1 @ModelAttribute("UM") 2 public SearchForm init() { 3 SearchForm sf = new SearchForm(); 4 sf.setTxt("test"); 5 sf.setRdo1("r1"); 6 sf.setRdo2("B"); 7 8 return sf; 9 }

Controllerクラスのメソッドに @ModelAttribute を付与した場合は、常にmodelへこのメソッドの戻り値がバインドされます。この場合は、"UM"の名前で、SearchFormの内容+値を定義した内容が入ります。

つまり init() メソッドを明示的に実行しなくても勝手に入ってしまいますので、不用意に @ModelAttribute を付けないことです。

投稿2020/08/23 16:36

A-pZ

総合スコア12011

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

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

Rivermouth

2020/08/24 00:54

ご回答ありがとうございます。 ModelAttribute("UM")をコントローラとhome.jspから削除したのですが、 java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'command' available as request attribute というようなエラーが起きてしまいます。 何かやり方が違うのでしょうか?
A-pZ

2020/08/24 01:09

除外したあとは、もちろんControllerとJSPで必要になる値を再定義してあげてください。
Rivermouth

2020/08/24 01:24

ご回答ありがとうございます。 すみません。全然分かりません。もう少し具体的に教えていただけますか? そもそも、このModelAttributeと私のやりたい同一画面上に表示はどう関係するのでしょうか?
A-pZ

2020/08/24 01:36 編集

@ModelAttribute を付与した場合は、常にmodelへこのメソッドの戻り値がUMの名前でバインドされてしまうので、常にJSPにてinit()で実装した内容がJSPに反映されてしまうのです。 そしてJSPでは。<form:form action="${url}" method="POST" modelAttribute="UM">と、UMの名前で要求しているにも関わらず、ControllerのloginGetでは SearchForm form = new SearchForm(); model.addAttribute(form); としていますので、名前は searchForm です。 model.addAttribute("UM" , form); で良いのではないでしょうか。 タグで無理やり消去するものではないです。
Rivermouth

2020/08/24 01:46

詳しく教えていただきありがとうございます。 入力画面までは無事に表示させることができましたが、送信ボタンを押下するとエラーが起きてしまいます。 以下が内容です。 java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'UM' available as request attribute どのように対処すればいいのか教えていただけますか?
A-pZ

2020/08/24 02:06

public String loginPost(SearchForm form, Model model) メソッドにて、SearchFormの内容を受け取れていないのが最初の原因です。この質問にて、必要もなく付与していた@ModelAttributeを取り払ったため起きていますから、このメソッドでは宣言します。 public String loginPost(@ModelAttribute("UM") SearchForm form, Model model) 同時に入力チェックエラーが発生している可能性があるので、きちんとSpringMVCの仕様にならい、BindingResultを、ModelAttributeで受け取ったクラスの直後に記述します。 public String loginPost(@ModelAttribute("UM") SearchForm form, BindingResult bindingResult, Model model) エラーが発生した場合は、どのタイミングで発生しているかがわからない場合は、最低でもデバッグモードで起動してブレークポイントを設定し、ステップ実行でどこまで動作した上でエラーが起こっているかを記述すると、エラーの原因を特定しやすくなります。
Rivermouth

2020/08/24 02:44

ご回答ありがとうございます。 エラーが起きることはなくなりましたが、送信ボタンを押しても入力結果が表示されなくなってしまいました。home.jspのc:outが正しく読み込まれていないのが原因なのでしょうか?
A-pZ

2020/08/24 04:02

<c:out value="${searchForm.txt}"/> は、searchFormの名前でバインドされている内容の中身ではないでしょうか。searchFormの名前では送信されていませんよね。UMでしょうか? パラメータの送受信がうまくいってないと思ったときも、最低でもデバッグモードで起動してブレークポイントを設定し、ステップ実行でどこまで値が入っているかを確認すると、解決が早くなります。
Rivermouth

2020/08/24 05:11

<div><span><c:out value="${UM.txt}"/></span></div> と変更したら、うまくmodelに格納されていたデータを引き出すことができました。 しかし、入力画面でchk1の初期値であるfalseが表示されてしまっています。 これも表示しないようにしたいのですが、どのように変更すればいいのでしょうか? デバッグモードに関してもアドバイスありがとうございます。 調べて実行してみたのですが、どうもサイトの情報と私の環境では差異があるようで、うまくいきません。
A-pZ

2020/08/24 10:44

チェックボックスの値ですから、チェックしていたらtrue、未チェックならfalseであっているのでは。 public boolean isChk1() { return chk1; } と実装されていますよね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問