###前提・実現したいこと
springbootで会員検索画面を作成しています。
使用しているDBはMysqlです。
DB上のカラムはID,名前,メモです。
会員検索画面で名前とメモのテキストボックスに値を入力して、ボタンを押下したら
画面上に検索した情報が表示したいです。
名前とメモのテキストボックスに値を入力して、ボタンを押下したらエラーが発生しましたが、原因は何でしょうか?
ご回答のほど宜しくお願い致します
エラーメッセージ ModelAndView: reference to view with name 'first'; model is {title=Find Page, msg=サンプルです, value=, datalist=[com.tuyano.springboot.MyDataMongo@5d599aec, com.tuyano.springboot.MyDataMongo@435785a9, com.tuyano.springboot.MyDataMongo@1104fe83, com.tuyano.springboot.MyDataMongo@1665bf7c, com.tuyano.springboot.MyDataMongo@7b9d0875, com.tuyano.springboot.MyDataMongo@418b062, com.tuyano.springboot.MyDataMongo@325eb684, com.tuyano.springboot.MyDataMongo@97b71ec, com.tuyano.springboot.MyDataMongo@1a361e16, com.tuyano.springboot.MyDataMongo@5bec2692, com.tuyano.springboot.MyDataMongo@1cc151fd, com.tuyano.springboot.MyDataMongo@4e67a798, com.tuyano.springboot.MyDataMongo@640bd6ec, com.tuyano.springboot.MyDataMongo@483148d0, com.tuyano.springboot.MyDataMongo@3b996d29, com.tuyano.springboot.MyDataMongo@11f6000]} paramcom.tuyano.springboot.MyDataMongo@14118e06 2016-08-27 11:48:16.929 ERROR 819 --- [nio-8080-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.InvalidDataAccessApiUsageException: Parameter value [com.tuyano.springboot.MyDataMongo@14118e06] did not match expected type [java.lang.String (n/a)]; nested exception is java.lang.IllegalArgumentException: Parameter value [com.tuyano.springboot.MyDataMongo@14118e06] did not match expected type [java.lang.String (n/a)]] with root cause java.lang.IllegalArgumentException: Parameter value [com.tuyano.springboot.MyDataMongo@14118e06] did not match expected type [java.lang.String (n/a)] at org.hibernate.jpa.spi.BaseQueryImpl.validateBinding(BaseQueryImpl.java:897) ~[hibernate-entitymanager-5.0.9.Final.jar:5.0.9.Final] at org.hibernate.jpa.internal.QueryImpl.access$000(QueryImpl.java:61) ~[hibernate-entitymanager-5.0.9.Final.jar:5.0.9.Final] at org.hibernate.jpa.internal.QueryImpl$ParameterRegistrationImpl.bindValue(QueryImpl.java:235) ~[hibernate-entitymanager-5.0.9.Final.jar:5.0.9.Final] at org.hibernate.jpa.spi.BaseQueryImpl.setParameter(BaseQueryImpl.java:638) ~[hibernate-entitymanager-5.0.9.Final.jar:5.0.9.Final] at org.hibernate.jpa.spi.AbstractQueryImpl.setParameter(AbstractQueryImpl.java:163) ~[hibernate-entitymanager-5.0.9.Final.jar:5.0.9.Final]
java
1・HeloController(修正後) 2package com.tuyano.springboot; 3 4import java.util.List; 5 6import org.springframework.beans.factory.annotation.Autowired; 7import org.springframework.stereotype.Controller; 8import org.springframework.transaction.annotation.Transactional; 9import org.springframework.web.bind.annotation.ModelAttribute; 10import org.springframework.web.bind.annotation.RequestMapping; 11import org.springframework.web.bind.annotation.RequestMethod; 12import org.springframework.web.bind.annotation.RequestParam; 13import org.springframework.web.servlet.ModelAndView; 14 15import com.tuyano.springboot.repositories.MyDataMongoRepository; 16 17@Controller 18public class HeloController { 19 20@Autowired 21MyDataMongoRepository repository; 22 23@RequestMapping(value="/",method=RequestMethod.GET) 24public ModelAndView index(@ModelAttribute("formModel")MyDataMongo mydatamongo,ModelAndView mav){ 25 mav.setViewName("index"); 26 mav.addObject("title","Find Page"); 27 mav.addObject("msg","サンプルです"); 28 List<MyDataMongo> list=repository.findAll(); 29 mav.addObject("datalist",list); 30 System.out.println(mav); 31 return mav; 32} 33@RequestMapping(value="/",method=RequestMethod.POST) 34 35public ModelAndView form( 36 @ModelAttribute("formModel")MyDataMongo mydatamongo,ModelAndView mav){ 37 repository.saveAndFlush(mydatamongo); 38 mav =new ModelAndView("redirect:/"); 39 System.out.println("mov"+mav); 40 return mav; 41} 42 43@RequestMapping(value="/first",method=RequestMethod.GET) 44public ModelAndView find(@ModelAttribute("formModel")MyDataMongo mydatamongo,ModelAndView mav){ 45 mav.setViewName("first"); 46 mav.addObject("title","Find Page"); 47 mav.addObject("msg","サンプルです"); 48 mav.addObject("value",""); 49 List<MyDataMongo> list=repository.findAll(); 50 mav.addObject("datalist",list); 51 System.out.println(mav); 52 return mav; 53} 54@RequestMapping(value="/first",method=RequestMethod.POST) 55public ModelAndView search(@RequestParam("name")String param,ModelAndView mav){ 56 mav.setViewName("first"); 57 58 if(param ==""){ 59 mav =new ModelAndView("redirect:/first"); 60 }else{ 61 System.out.println("param"+param); 62 mav.addObject("title","Find Result"); 63 mav.addObject("msg","["+param+"]の検索結果"); 64 mav.addObject("value",param); 65 List<MyDataMongo> list=repository.findByName(param); 66 System.out.println(list); 67 mav.addObject("dataList",list); 68 69 } 70 System.out.println(mav); 71return mav; 72} 73}
java
1・MyDataMongo.java 2package com.tuyano.springboot; 3 4import java.util.Date; 5 6import javax.persistence.Column; 7import javax.persistence.Entity; 8import javax.persistence.GeneratedValue; 9import javax.persistence.GenerationType; 10import javax.persistence.Id; 11import javax.persistence.Table; 12@Entity 13@Table(name="Linefriend") 14public class MyDataMongo { 15@Id 16@GeneratedValue(strategy=GenerationType.AUTO) 17@Column 18private Long id; 19 20@Column 21private String name; 22@Column 23private String memo; 24//private Date date; 25public MyDataMongo(String name, String memo) { 26 super(); 27 this.name=name; 28 this.memo=memo; 29} 30 31//public void setId(Long id){ 32 33// this.id=id; 34 35//} 36 37public Long getId(){ 38 39 return id; 40 41} 42 43 44public String getName(){ 45 46 return name; 47 48} 49 50 51 52 53 54public String getMemo(){ 55 56 return memo; 57 58} 59 60 61 62 63 64 65} 66 67
HTML
1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org"> 3<head> 4<title>top page</title> 5<meta http-equiv="Content-Type" 6content="text/html" charset="UTF-8"/> 7</head> 8<body> 9 10 <h1 th:text="${title}">find Page</h1> 11 <p th:text="${msg}"></p> 12 <table> 13 <form method="post" action="/first"> 14 <tr><td>名前</td> 15 <td><input type="text" name="first" size="20" th:value="${value}"/></td></tr> 16 <tr><td>パスワード</td> 17 <td><input type="text" name="first" size="20" th:value="${value}"/></td></tr> 18 <tr><td></td><td><input type="submit"/></td></tr> 19 </form> 20 </table> 21 <hr/> 22 <table> 23 <tr><th>名前</th><th>メモ</th><th>日時</th></tr> 24 <tr th:each="obj :${datalist}"> 25 <td th:text="${obj.name}"></td> 26 <td th:text="${obj.memo}"></td> 27 28 </tr> 29 </table> 30 31 32</body> 33</html>
java
1・MyDataMongoRepository.java(修正後) 2package com.tuyano.springboot.repositories; 3 4import java.util.List; 5 6import org.springframework.data.jpa.repository.JpaRepository; 7import org.springframework.stereotype.Repository; 8 9import com.tuyano.springboot.MyDataMongo; 10 11 12@Repository 13public interface MyDataMongoRepository extends JpaRepository<MyDataMongo,String>{ 14 15public List<MyDataMongo> findByName(String s); 16 17 18} 19 20 21
私もあまり自信が無いのですが、findByName(MyDataMongo mydatamongo)という書き方は何を参考にしたのですか? エラーはこの方法が使えないことを示唆しているように思います。
ご回答して頂きありがとうございます。書き方は主に所有しておりますspringbootの書籍を参考しております。
・HeloControlle.java
・MyDataMongoRepository.java
を修正し、正常に検索できるようになりました。
修正した箇所の修正はコードに記載しております。
お忙しい中ご回答して頂きありがとうございました
Stringに変えたのですね。元の方法は本当に使えないのかどうか自信がありませんので、回答しないでおきます。
質問が付かずに解決された場合は、お手数ですが、質問者様ご自身で質問のクローズをお願いします。
質問の下部にある「自己解決方法を記入する」で解決した方法を書いて投稿すれば、クローズできます。
了解しました。ではこちらでクローズしておきますね
回答1件
あなたの回答
tips
プレビュー