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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Java

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

Q&A

1回答

3903閲覧

Springbootで検索機能実装時に発生したエラー

退会済みユーザー

退会済みユーザー

総合スコア0

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Java

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

Spring Boot

Spring Bootは、Javaのフレームワークの一つ。Springプロジェクトが提供する様々なフレームワークを統合した、アプリケーションを高速で開発するために設計されたフレームワークです。

0グッド

0クリップ

投稿2020/06/22 15:09

編集2020/06/22 23:43

前提・実現したいこと

springbootを使い、簡単な登録、削除、一覧表示、詳細表示、あいまい検索ができるWebアプリケーションを作成しています。

アプリの内容としてはトップ画面から入力、一覧、検索画面に遷移するアプリです。
あいまい検索以外はすでに問題なく動作するところまで確認済みです。

ただ、起動し、検索の画面に遷移したところ画面上に下記のWhitelabel Errorが、STSでも下記のWARNが表示されていました。

エラーメッセージを読んでみたものの特にヒントにはなりませんでした。

### Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Mon Jun 22 23:46:07 JST 2020 There was an unexpected error (type=Bad Request, status=400).
### WARN WARN 4260 --- [nio-8080-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter 'pra' is not present]

該当のソースコード

java

1//コントローラー。 2package com.example.demo; 3 4import java.util.List; 5import java.util.Optional; 6 7import org.springframework.beans.factory.annotation.Autowired; 8import org.springframework.stereotype.Controller; 9import org.springframework.transaction.annotation.Transactional; 10import org.springframework.web.bind.annotation.ModelAttribute; 11import org.springframework.web.bind.annotation.PathVariable; 12import org.springframework.web.bind.annotation.RequestMapping; 13import org.springframework.web.bind.annotation.RequestMethod; 14import org.springframework.web.bind.annotation.RequestParam; 15import org.springframework.web.servlet.ModelAndView; 16 17@Controller 18public class MyController { 19 @Autowired 20 MyDataRepository repository; 21 22 //トップ 23 @RequestMapping("/") 24 public String index() { 25 return "index"; 26 } 27 28 //入力 29 @RequestMapping("/write") 30 public ModelAndView write(@ModelAttribute("formModel") MyData mydata,ModelAndView mv) { 31 mv.setViewName("write"); 32 return mv; 33 } 34 35 //フォーム 36 @RequestMapping(value="/form", method=RequestMethod.POST) 37 @Transactional(readOnly=false) 38 public ModelAndView form(@ModelAttribute("formModel") MyData mydata, ModelAndView mv) { 39 repository.saveAndFlush(mydata); 40 return new ModelAndView("redirect:/"); 41 } 42 43 //一覧 44 @RequestMapping(value="/list",method=RequestMethod.GET) 45 public ModelAndView list(ModelAndView mv) { 46 mv.setViewName("list"); 47 List<MyData> list = repository.findAll(); 48 mv.addObject("datalist", list); 49 return mv; 50 } 51 52 //詳細 53 @RequestMapping(value="/data/{id}",method=RequestMethod.GET) 54 public ModelAndView data(@ModelAttribute MyData mydata, @PathVariable int id, ModelAndView mv) { 55 mv.setViewName("data"); 56 Optional<MyData> data = repository.findById(id); 57 mv.addObject("formModel", data.get()); 58 return mv; 59 } 60 61 //削除 62 @RequestMapping(value="/delete/{id}",method=RequestMethod.GET) 63 public ModelAndView delete(@PathVariable int id, ModelAndView mv) { 64 mv.setViewName("delete"); 65 Optional<MyData> data = repository.findById(id); 66 mv.addObject("formModel", data.get()); 67 return mv; 68 } 69 @RequestMapping(value="/delete",method=RequestMethod.POST) 70 @Transactional(readOnly = false) 71 public ModelAndView remove(@RequestParam int id) { 72 repository.deleteById(id); 73 return new ModelAndView("redirect:/"); 74 } 75 76 //検索 77 @RequestMapping(value="/search") 78 public ModelAndView search(@RequestParam("pra") String pra,ModelAndView mv) { 79 List<MyData> list = repository.findByPraLike("%" + pra + "%"); 80 mv.addObject("dataList", list); 81 mv.setViewName("list"); 82 return mv; 83 } 84}

java

1//リポジトリ 2package com.example.demo; 3 4import java.util.List; 5import org.springframework.data.jpa.repository.JpaRepository; 6import org.springframework.stereotype.Repository; 7@Repository 8public interface MyDataRepository extends JpaRepository<MyData, Integer> { 9 List<MyData> findByPraLike(String pra); 10} 11

html

1<!-- 検索画面、単語を入力し、ボタンを押下するとリストで結果を表示 --> 2<!DOCTYPE html> 3<html xmlns:th="http://www.thymeleaf.org" > 4<head> 5<meta charset="UTF-8"> 6<title>検索画面</title> 7</head> 8<body> 9<form action="/search"> 10観光地<input type="text" name="pra" /> 11 12<input type="submit" value="検索" /><a href="/list"></a> 13<input type="button" value="検索" onclick="location.href='/list'"> 14</form> 15</body> 16</html> 17

html

1<!-- トップページのアプリで、ボタンで画面に遷移 --> 2<!DOCTYPE html> 3<html xmlns:th="http://www.thymeleaf.org" > 4<head> 5<meta charset="UTF-8"> 6<title>トップページ</title> 7</head> 8<body> 9<table> 10<tr><th><h2>旅行アプリ</h2></th></tr> 11</table> 12<input type="button" value="&#x1f6eb;(入力画面)" onclick="location.href='/write'"> 13<input type="button" value="&#x1f685;(一覧画面)" onclick="location.href='/list'"> 14<input type="button" value="&#x1f68c;(検索画面)" onclick="location.href='/search'"> 15</body> 16</html> 17 18

試したこと

//検索となっている箇所の/searchを/search/{pra}に変更してみた。

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

開発ツール:STS4.3.2,H2Console

フレームワーク:Springboot
使用言語:Java SE11,HTML5
データベース:H2DB
テンプレートエンジン:Thymeleaf

あいまい検索はString型の変数praで検索を行える機能としています。

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

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

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

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

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

m.ts10806

2020/06/22 19:57

>実装中に 「実装中」では分かりません。何の「操作」をしたときに出たエラーですか? エラーは何のヒントにもなりませんか? There was an unexpected error (type=Bad Request, status=400).
退会済みユーザー

退会済みユーザー

2020/06/22 21:44

実装中にではなく、アプリを起動して検索画面に遷移した際に、画面上にWhitelabel Error Page There was an unexpected error~と表示されました。
m.ts10806

2020/06/22 22:33

質問編集して表現を調整してください。
m.ts10806

2020/06/22 22:33

あともう1点書いてます。 >エラーは何のヒントにもなりませんか? There was an unexpected error (type=Bad Request, status=400).
YT0014

2020/06/23 05:57

Required String parameter 'pra' is not present も、きちんと理解すれば解決に十分な情報です。
guest

回答1

0

java

1 @RequestMapping(value="/search", method = RequestMethod.GET) 2 public ModelAndView search(@RequestParam(value = "pra", defaultValue = "") String pra, ModelAndView mv) { 3 List<MyData> list = repository.findByPraLike("%" + pra + "%"); 4 mv.addObject("dataList", list); 5 mv.setViewName("list"); 6 return mv; 7 }

method = RequestMethod.GETの追加
defaultValue = ""の追加

でいけないですかね??

投稿2020/06/27 15:02

tattakahiiii

総合スコア27

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問