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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Java

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

Spring

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

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

Q&A

解決済

3回答

8338閲覧

spring4の検索画面の作り方

gik

総合スコア152

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Java

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

Spring

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

MyBatis

MyBatisはJavaや.NET Frameworkでなどで使用できる、SQL文や、ストアドプロシージャをオブジェクトと紐付けるO/Rマッピングフレームワークです。

0グッド

0クリップ

投稿2016/10/21 11:20

編集2016/10/27 14:09

spring4+MyBatisで検索画面を作っているのですが、うまくいきません。
エラーがでます。
教えてください。
os winodws10、java1.8、tomcat8.0、spring4

java

1package jp.co.kenshu.controller; 2 3import java.util.List; 4 5import org.springframework.beans.BeanUtils; 6import org.springframework.beans.factory.annotation.Autowired; 7import org.springframework.stereotype.Controller; 8import org.springframework.ui.Model; 9import org.springframework.web.bind.annotation.ModelAttribute; 10import org.springframework.web.bind.annotation.PathVariable; 11import org.springframework.web.bind.annotation.RequestMapping; 12import org.springframework.web.bind.annotation.RequestMethod; 13 14import jp.co.kenshu.dto.test.TestDto; 15import jp.co.kenshu.form.SearchForm; 16import jp.co.kenshu.form.TestForm; 17import jp.co.kenshu.service.TestService; 18 19@Controller 20public class TestController { 21 22 @Autowired 23 private TestService testService; 24 25 26 @RequestMapping(value = "/test/{id}", method = RequestMethod.GET) 27 public String test(Model model, @PathVariable int id) { 28 TestDto test = testService.getTest(id); 29 model.addAttribute("message", "MyBatisのサンプルです"); 30 model.addAttribute("test", test); 31 return "test"; 32 } 33 34 @RequestMapping(value = "/test/", method = RequestMethod.GET) 35 public String testAll(Model model) { 36 List<TestDto> tests = testService.getTestAll(); 37 model.addAttribute("message", "MyBatisの全件取得サンプルです"); 38 model.addAttribute("tests", tests); 39 return "test"; 40 } 41 @RequestMapping(value = "/test/insert/input/", method = RequestMethod.GET) 42 public String testInsert(Model model) { 43 TestForm form = new TestForm(); 44 model.addAttribute("testForm", form); 45 model.addAttribute("message", "MyBatisのinsertサンプルです。"); 46 return "testInsert"; 47 } 48 49 @RequestMapping(value = "/test/insert/input/", method = RequestMethod.POST) 50 public String testInsert(@ModelAttribute TestForm form, Model model) { 51 int count= testService.insertTest(form.getName()); 52 return "redirect:/test/"; 53 } 54 @RequestMapping(value = "/test/delete/input/", method = RequestMethod.GET) 55 public String testDelete(Model model) { 56 TestForm form = new TestForm(); 57 model.addAttribute("testForm", form); 58 model.addAttribute("message", "MyBatisのdeleteサンプルです。"); 59 return "testDelete"; 60 } 61 62 @RequestMapping(value = "/test/delete/input/", method = RequestMethod.POST) 63 public String testDelete(@ModelAttribute TestForm form, Model model) { 64 int count = testService.deleteTest(form.getId()); 65 return "redirect:/test/"; 66 } 67 @RequestMapping(value = "/test/update/input/{id}/", method = RequestMethod.GET) 68 public String testUpdate(Model model, @PathVariable int id) { 69 TestDto test = testService.getTest(id); 70 model.addAttribute("message", "MyBatisのUpdateサンプルです"); 71 model.addAttribute("test", test); 72 TestForm form = new TestForm(); 73 form.setId(test.getId()); 74 form.setName(test.getName()); 75 model.addAttribute("testForm", form); 76 return "testUpdate"; 77 } 78 79 @RequestMapping(value = "/test/update/input/{id}/", method = RequestMethod.POST) 80 public String testUpdate(Model model, @ModelAttribute TestForm form) { 81 TestDto dto = new TestDto(); 82 BeanUtils.copyProperties(form, dto); 83 int count = testService.updateTest(dto); 84 return "redirect:/test/"; 85 } 86 87 @RequestMapping(value = "/test/search/", method = RequestMethod.GET) 88 public String TestSearch(Model model) { 89 SearchForm form = new SearchForm(); 90 model.addAttribute("SearchForm", form); 91 model.addAttribute("message", "MyBatisサンプルです。"); 92 return "TestSearch1"; 93 } 94 95 @RequestMapping(value = "/test/search/{name}", method = RequestMethod.GET) 96 public String TestSearch1(@ModelAttribute SearchForm form, Model model) { 97 TestDto test= testService.SearchTest1(form.getName()); 98 model.addAttribute("test",test); 99 return "redirect:/test/search"; 100 } 101 102 103} 104

java

1package jp.co.kenshu.service; 2 3import java.util.LinkedList; 4import java.util.List; 5 6import org.springframework.beans.BeanUtils; 7import org.springframework.beans.factory.annotation.Autowired; 8import org.springframework.stereotype.Service; 9 10import jp.co.kenshu.dto.test.TestDto; 11import jp.co.kenshu.entity.Test; 12import jp.co.kenshu.mapper.TestMapper; 13 14@Service 15public class TestService { 16 17 @Autowired 18 private TestMapper testMapper; 19 20 public TestDto getTest(Integer id) { 21 TestDto dto = new TestDto(); 22 Test entity = testMapper.getTest(id); 23 BeanUtils.copyProperties(entity, dto); 24 return dto; 25 } 26 public List<TestDto> getTestAll() { 27 List<Test> testList = testMapper.getTestAll(); 28 List<TestDto> resultList = convertToDto(testList); 29 return resultList; 30 } 31 32 private List<TestDto> convertToDto(List<Test> testList) { 33 List<TestDto> resultList = new LinkedList<>(); 34 for (Test entity : testList) { 35 TestDto dto = new TestDto(); 36 BeanUtils.copyProperties(entity, dto); 37 resultList.add(dto); 38 } 39 return resultList; 40 } 41 public int insertTest(String name) { 42 int count = testMapper.insertTest(name); 43 return count; 44 } 45 public int deleteTest(int id) { 46 int count = testMapper.deleteTest(id); 47 return count; 48 } 49 50 public int updateTest(TestDto dto) { 51 int count = testMapper.updateTest(dto); 52 return count; 53 } 54 55 public TestDto SearchTest1(String name) { 56 TestDto dto = new TestDto(); 57 Test entity = testMapper.SearchTest1(name); 58 BeanUtils.copyProperties(entity, dto); 59 return dto; 60 } 61 62}

イメージ説明

イメージ説明

java

1TestSearch1.jsp 2 3<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 4<%@ taglib uri="http://www.springframework.org/tags" prefix="spring"%> 5<%@ taglib uri="http://www.springframework.org/tags/form" prefix="form"%> 6<html> 7<head> 8<meta charset="utf-8"> 9<title>Welcome</title> 10</head> 11<body> 12 <form:form action="${pageContext.request.contextPath}/test/serach/" 13 method="get" modelAttribute="SearchForm"> 14 <form:label path="name">名前:</form:label><form:input path="name" size="40" /><br> 15 <input type="submit" value="Search"/> 16 </form:form> 17 <hr/> 18 <table> 19 <tr> 20 <th>Id</th> 21 <th>Name</th> 22 </tr> 23 <tr> 24 <td>${test.id}</td> 25 <td>${test.name}</td> 26 </tr> 27 </table> 28</body> 29</html> 30
mvc-config.xml <context:component-scan base-package="jp.co.kenshu" /> <mvc:annotation-driven /> <bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource"> <property name="basename" value="classpath:ValidatorMessages" /> </bean> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- Example: a logical view name of 'showMessage' is mapped to '/WEB-INF/jsp/showMessage.jsp' --> <property name="prefix" value="/WEB-INF/view/" /> <property name="suffix" value=".jsp" /> </bean> <!-- DataSource --> <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost/test" /> <property name="username" value="" /> <property name="password" value="" /> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="jp.co.kenshu.mapper" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean>
HTTPステータス 400 - 説明 The request sent by the client was syntactically incorrect.

イメージ説明
イメージ説明
イメージ説明
イメージ説明

いろいろ考えたり、アドバイスをもらっていろいろ今回直しました。
まだエラーがでて動きません。動くようにしたいです。わかる方教えてください。
この部分のせてとかあれば載せます。
後どなたかこのソースコードでうごくか確認してもらえないでしょうか?
リンク内容
を参考にしました
controller、DTO、Entity、Mapperあっていますでしょうか?
後name検索をspring4とMyBatis3でやっているサイトとかあれば教えてください。
参考にします。
よろしくお願いします。
後jspはうごくようになりました。
名前を入力すると400エラーになります。
イメージ説明
イメージ説明

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2016/10/21 12:49

ORMのネストの設定が間違えてるように見えますが。 多分上がってないファイルでしょうね。 何が上がってないかはわかりませんのであしからず
gik

2016/10/21 14:09

すいません。何の情報を追記すればよいでしょうか?
guest

回答3

0

自己解決

もう少し勉強してからチャレンジします。
たくさんのアドバイスありがとうございました。

投稿2016/11/09 18:03

編集2016/11/09 18:04
gik

総合スコア152

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

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

0

MybatisのMapper定義にて、resultTypeが設定されていないときのエラーでしょうか。

例えば、以下のように設定します。

xml

1<?xml version="1.0" encoding="UTF-8" ?> 2<!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5<mapper namespace="seren.sample.mapper.TodoMapper"> 6 <select id="search" resultType="seren.sample.dto.Todo"> 7select 8 id, task 9from 10 todo 11 </select> 12</mapper>

SQLが発行できない問題はこれで解決するでしょう。

投稿2016/10/22 08:26

A-pZ

総合スコア12011

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

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

gik

2016/10/22 09:59 編集

うまくいきませんでした HTTPステータス 500 - Request processing failed; nested exception is java.lang.IllegalArgumentException: Source must not be null type 例外レポート メッセージ Request processing failed; nested exception is java.lang.IllegalArgumentException: Source must not be null 説明 The server encountered an internal error that prevented it from fulfilling this request. 例外 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: Source must not be null org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 原因 java.lang.IllegalArgumentException: Source must not be null org.springframework.util.Assert.notNull(Assert.java:112) org.springframework.beans.BeanUtils.copyProperties(BeanUtils.java:596) org.springframework.beans.BeanUtils.copyProperties(BeanUtils.java:542) jp.co.kenshu.service.TestService.SearchTest1(TestService.java:58) jp.co.kenshu.controller.TestController.TestSearch(TestController.java:90) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:497) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) logに毎回 Servlet.service() for servlet [dispatcherServlet] in context with path [/SpringKenshu] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Source must not be null] with root cause これが書かれています。 これなんなんでしょうか。
A-pZ

2016/10/22 12:25

Source must not be nullのスタックトレースをたどると、BeanUtils.copyPropertiesにて、nullのものをコピーしようとしているのではないですかね。 SearchDtoへコピーしようとしているので、まずはBeanUtils.copyPropertiesへ到着するまえにブレークポイントを設定し、デバッグモードで起動して問題の切り分けをするとよいでしょうか。
gik

2016/10/22 20:48 編集

警告: Skipping MapperFactoryBean with name 'testMapper' and 'jp.co.kenshu.mapper.TestMapper' mapperInterface. Bean already defined with the same name! [日 10 23 03:31:13 JST 2016] 警告: No MyBatis mapper was found in '[jp.co.kenshu.mapper]' package. Please check your configuration. [日 10 23 03:31:13 JST 2016] この2つがログとしてでました。 ソースコードがよくないということでしょうか? またソースをいじっていたら また、500エラーでなくなり HTTPステータス 400 - type ステータスレポート メッセージ 説明 The request sent by the client was syntactically incorrect. になってしまいました。すいません。
A-pZ

2016/10/23 03:26

mapper定義が重複しているのではないでしょうか。
gik

2016/10/23 09:51 編集

mapper定義が重複しているとはどういう意味でしょう? 調べてみたんですが、わかりませんでした。 どこを調べたらよいでしょうか? すいません。今回すべてのせてみました。 写真とかみにくいとは思いますが、ぜひ教えてください。 お願いします
A-pZ

2016/10/27 15:13

まずControllerクラスでの@RequestMappingsとブラウザからリクエストしているURLの関係ですが、@RequestMappingsで指定するURLの最後に / がついているものと、/がないものが混在しています。 最後の/は不要だと思いますので修正しましょう。 そうした上で、searchボタンを押した際にリクエストされるURLを再確認し、修正しましょう。 具体的には、@RequestMapping(value = "/test/search/{name}", method = RequestMethod.GET) に対応するURLが、searchボタンで実行されているかを確認しましょう。
guest

0

こういう時は、まず、例外のメッセージをgoogleで検索することをお勧めします。

It's likely that neither a Result Type nor a Result Map was specified.
上記で検索してHITしたサイトの抜粋では、

解決方法:
XMLドキュメントでresultTypeを明示していない場合に発生する問題である。
一般的なDMLは構わないが、SELECTの場合には、必ず明示しなければならない。

提示されているXMLを確認してみるに、

<select id="SearchTest1" parameterType="String"> と、なっています。 つまり、このselect結果を代入すべきresultがないようです。

MyBatisのresultTypeなり、resultMapを指定してみてください。

<select id="SearchTest1" parameterType="String" resultMap="TestResult"> とすべきではないでしょうか

投稿2016/10/21 13:06

akio221

総合スコア716

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

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

退会済みユーザー

退会済みユーザー

2016/10/21 13:11

<resultMap id="TestResult" type="jp.co.kenshu.entity.Test"> <result column="id" property="id" /> <result column="name" property="name" /> </resultMap> 属性値ではなく XML要素で定義されてるけどね。 (これが正しいかどうかはさておき)
gik

2016/10/21 14:08

HTTPステータス 500 - Request processing failed; nested exception is java.lang.IllegalArgumentException: Source must not be null type 例外レポート メッセージ Request processing failed; nested exception is java.lang.IllegalArgumentException: Source must not be null 説明 The server encountered an internal error that prevented it from fulfilling this request. 例外 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: Source must not be null org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 原因 java.lang.IllegalArgumentException: Source must not be null org.springframework.util.Assert.notNull(Assert.java:112) org.springframework.beans.BeanUtils.copyProperties(BeanUtils.java:596) org.springframework.beans.BeanUtils.copyProperties(BeanUtils.java:542) jp.co.kenshu.service.TestService.SearchTest1(TestService.java:59) jp.co.kenshu.controller.TestController.TestSearch(TestController.java:91) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:497) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 直したところ、上のエラーがでました。 すいません。Request processing failed; nested exception is java.lang.IllegalArgumentException: Source must not be nullを調べましたがわかりません。
akio221

2016/10/21 14:24

>java.lang.IllegalArgumentException: Source must not be null >org.springframework.util.Assert.notNull(Assert.java:112) >org.springframework.beans.BeanUtils.copyProperties(BeanUtils.java:596) BeanUtilでパラメータを代入した後、AssertでnotNullに引っかかったように見受けられます。 前段の >jp.co.kenshu.service.TestService.SearchTest1(TestService.java:59) >jp.co.kenshu.controller.TestController.TestSearch(TestController.java:91) ここらを呼ぶ前にパラメータがあるのかどうかを確認してください。
gik

2016/10/21 14:55

nameの値が空のしょちをしていないのがまずいのでしょうか?
akio221

2016/10/21 14:58

逆説的ではありますが、nameに値が入っているときは動作しますか? 動作するのであれば、空の値が入ることを防がねばいけませんね。
gik

2016/10/21 15:11 編集

その場面にいきません。 http://localhost:8080/SpringKenshu/search/ の場面ですでに500エラーでjspがおかしいのでしょうか? >jp.co.kenshu.service.TestService.SearchTest1(TestService.java:59) >jp.co.kenshu.controller.TestController.TestSearch(TestController.java:91) ここらを呼ぶ前にパラメータがあるのかどうかを確認してください。 ここもよくわかりません。 自分ももう少し調べてみますが、わかったら教えてください。 すいません。 後この部分だしてというのがあれば出します
akio221

2016/10/21 15:19

コントローラのフォーム値をとってくるあたりで、 SearchDto tests = testService.SearchTest1(form.getName()); の、form.getName()に値があるのかを System.Out.println(form.getName()); して調べたり、あるいは SearchDto tests = testService.SearchTest1("固定文字列")); として、例外となるかどうかを確認するということです。
gik

2016/10/21 17:40

SearchDto tests = testService.SearchTest1(form.getName()); System.out.println(form.getName()); SearchDto tests = testService.SearchTest1("固定文字列")); を行っても http://localhost:8080/SpringKenshu/search/ を入力したときに下のように HTTPステータス 500 - Request processing failed; nested exception is java.lang.IllegalArgumentException: Source must not be null type 例外レポート メッセージ Request processing failed; nested exception is java.lang.IllegalArgumentException: Source must not be null 説明 The server encountered an internal error that prevented it from fulfilling this request. 例外 org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.IllegalArgumentException: Source must not be null org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 原因 java.lang.IllegalArgumentException: Source must not be null org.springframework.util.Assert.notNull(Assert.java:112) org.springframework.beans.BeanUtils.copyProperties(BeanUtils.java:596) org.springframework.beans.BeanUtils.copyProperties(BeanUtils.java:542) jp.co.kenshu.service.TestService.SearchTest1(TestService.java:59) jp.co.kenshu.controller.TestController.TestSearch(TestController.java:91) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:497) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:966) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:857) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:842) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
akio221

2016/10/22 00:52 編集

とりあえず、変更しても現象に変わりがないのであれば、 入力パラメータがNullで落ちているのではなく、 XMLに定義された、Springが要求するSQLの結果記入先がないか、 JSP表示時のtestエンティティがNullか,といったところでしょう。
gik

2016/10/22 10:08 編集

すいません。具体的にどうしたらいいでしょうか?
akio221

2016/10/22 10:18

ResultMapなり、ResultTypeなりの設定がおかしいのではないかという提示をしています。 エンティティのパスが正しいのか、とかマップで受けたら取れるのか、とか検証してください。 いよいよ分からなければ、研修なのでしょうから、そこで聞いてください。
gik

2016/10/22 10:51 編集

わかりました。 ありがとうございます。 一人で勉強して、聞けるひとがいなくてすいません。 コードみても間違いが分からず、どうしようもなくて。 答えてくださりありがとうございました。
gik

2016/10/24 18:38

すいません。 前回自分で考えるとかきましたが、 やはりわからずじまいです。 申し訳ありませんが、どこが間違い かわかるなら教えてもらえないでしょうか?
gik

2016/10/25 08:10 編集

設定してみました。 あってますでしょうか? 写真添付して貼り付けました。 エラーは400エラーです 警告: Skipping MapperFactoryBean with name 'testMapper' and 'jp.co.kenshu.mapper.TestMapper' mapperInterface. Bean already defined with the same name! [火 10 25 15:56:52 JST 2016] 警告: No MyBatis mapper was found in '[jp.co.kenshu.mapper]' package. Please check your configuration. [火 10 25 15:56:52 JST 2016] 後研修ではなく、自分で勉強しようと思い、やってみたんですが..... なんとか完成までご助力いただけると助かります。 すいません。よろしくお願いします。
akio221

2016/10/25 08:41

> Skipping MapperFactoryBean with name 'testMapper' and 'jp.co.kenshu.mapper.TestMapper' mapperInterface. Bean already defined with the same name! mvc-config.xml MapperScannerConfigurerが2つあります。たぶん、それで読んでないっぽいです。 で、スキップされてしまうから、 > No MyBatis mapper was found in '[jp.co.kenshu.mapper]' package. Please check your configuration. マッパーが見つからないのでコンフィグを見直してください、と。 MyBatisにしろ、Springにしろ、依存性注入のための名前解決は非常に重要です。 じっくりとエラメッセージを読みながら、名前解決してください。
gik

2016/10/25 10:39

エラーがなくなりました。 ありがとうございます。 しかし、まだ動きません。 後どこみたらいいでしょうか?
akio221

2016/10/25 10:51

「何が」「どのように」「動かない」のか、「どのように」「動かしたい」のか、さっぱりみえません。 エラーがなくなったのであれば、次はコントローラでデバッグして、データベースへのアクセスができたのかどうかを確認して下さい。
gik

2016/10/25 11:29 編集

TestDto test = testService.SearchTest1(name); のところにブレイクポイントをおき、デバックしたところ 404エラーでした。 また public String TestSearch(Model model, @ModelAttribute SearchForm form, @PathVariable String name) { のところにブレイクポイントをおいても404エラーでした formとentityとDTOのソースコードも載せました。
akio221

2016/10/25 11:29

404 not foundであれば、エラーがなくなったわけではなく、まだ、エラーは継続中です。サーバとして応答していません。 例外メッセージを吐いているはずです。まず、そちらをご覧ください。
akio221

2016/10/25 11:51

質問に追記されているようなので、再度お答えしておきます。 サーバーに応答させているURLにアクセスしてブラウザに404エラーが出るということは 即ち、サーバーが応答していません。 ブラウザのエラーについて述べるよりもサーバで発生している例外を確認してください。
gik

2016/10/25 14:52 編集

警告がない。どうしたらいいでしょうか? 情報: Starting Servlet Engine: Apache Tomcat/8.0.26 [火 10 25 23:49:00 JST 2016] 情報: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time. [火 10 25 23:49:01 JST 2016] 情報: No Spring WebApplicationInitializer types detected on classpath [火 10 25 23:49:01 JST 2016] 情報: Initializing Spring root WebApplicationContext [火 10 25 23:49:01 JST 2016] 情報: Root WebApplicationContext: initialization started [火 10 25 23:49:01 JST 2016] 情報: Refreshing Root WebApplicationContext: startup date [Tue Oct 25 23:49:01 JST 2016]; root of context hierarchy [火 10 25 23:49:01 JST 2016] 情報: Loading XML bean definitions from class path resource [spring/application-config.xml] [火 10 25 23:49:01 JST 2016] 情報: Root WebApplicationContext: initialization completed in 256 ms [火 10 25 23:49:01 JST 2016] 情報: Initializing Spring FrameworkServlet 'dispatcherServlet' [火 10 25 23:49:02 JST 2016] 情報: FrameworkServlet 'dispatcherServlet': initialization started [火 10 25 23:49:02 JST 2016] 情報: Refreshing WebApplicationContext for namespace 'dispatcherServlet-servlet': startup date [Tue Oct 25 23:49:02 JST 2016]; parent: Root WebApplicationContext [火 10 25 23:49:02 JST 2016] 情報: Loading XML bean definitions from ServletContext resource [/WEB-INF/mvc-config.xml] [火 10 25 23:49:02 JST 2016] 情報: Mapped "{[/test/{id}],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String jp.co.kenshu.controller.TestController.test(org.springframework.ui.Model,int) [火 10 25 23:49:03 JST 2016] 情報: Mapped "{[/test/insert/input/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String jp.co.kenshu.controller.TestController.testInsert(org.springframework.ui.Model) [火 10 25 23:49:03 JST 2016] 情報: Mapped "{[/test/insert/input/],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String jp.co.kenshu.controller.TestController.testInsert(jp.co.kenshu.form.TestForm,org.springframework.ui.Model) [火 10 25 23:49:03 JST 2016] 情報: Mapped "{[/test/delete/input/],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String jp.co.kenshu.controller.TestController.testDelete(jp.co.kenshu.form.TestForm,org.springframework.ui.Model) [火 10 25 23:49:03 JST 2016] 情報: Mapped "{[/test/delete/input/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String jp.co.kenshu.controller.TestController.testDelete(org.springframework.ui.Model) [火 10 25 23:49:03 JST 2016] 情報: Mapped "{[/test/update/input/{id}/],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String jp.co.kenshu.controller.TestController.testUpdate(org.springframework.ui.Model,jp.co.kenshu.form.TestForm) [火 10 25 23:49:03 JST 2016] 情報: Mapped "{[/test/update/input/{id}/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String jp.co.kenshu.controller.TestController.testUpdate(org.springframework.ui.Model,int) [火 10 25 23:49:03 JST 2016] 情報: Mapped "{[/test/search/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String jp.co.kenshu.controller.TestController.TestSearch(org.springframework.ui.Model,jp.co.kenshu.form.SearchForm,java.lang.String) [火 10 25 23:49:03 JST 2016] 情報: Mapped "{[/test/],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String jp.co.kenshu.controller.TestController.testAll(org.springframework.ui.Model) [火 10 25 23:49:03 JST 2016] INFO Version - HV000001: Hibernate Validator 5.0.1.Final 情報: Looking for @ControllerAdvice: WebApplicationContext for namespace 'dispatcherServlet-servlet': startup date [Tue Oct 25 23:49:02 JST 2016]; parent: Root WebApplicationContext [火 10 25 23:49:03 JST 2016] 情報: Looking for @ControllerAdvice: WebApplicationContext for namespace 'dispatcherServlet-servlet': startup date [Tue Oct 25 23:49:02 JST 2016]; parent: Root WebApplicationContext [火 10 25 23:49:03 JST 2016] 情報: FrameworkServlet 'dispatcherServlet': initialization completed in 1392 ms [火 10 25 23:49:03 JST 2016] 情報: Starting ProtocolHandler ["http-nio-8080"] [火 10 25 23:49:03 JST 2016] 情報: Starting ProtocolHandler ["ajp-nio-8009"] [火 10 25 23:49:03 JST 2016] 情報: Server startup in 3031 ms [火 10 25 23:49:03 JST 2016]
gik

2016/10/25 19:45

http://localhost:8080/test/は動いています 後 /* @RequestMapping(value = "/test/search/", method = RequestMethod.GET) public String TestSearch(Model model, @ModelAttribute SearchForm form, @PathVariable String name) { TestDto dto = new TestDto(); dto.setName(form.getName()); TestDto test = testService.SearchTest1(name); model.addAttribute("message","MyBatisの全件取得サンプルです"); model.addAttribute("test",test); return "redirect:/test/search/"; } */ のソースコードをやめて、 @RequestMapping(value = "/test/search/", method = RequestMethod.GET) public String TestSearch(Model model) { SearchForm form = new SearchForm(); model.addAttribute("SearchForm", form); model.addAttribute("message", "MyBatisのdeleteサンプルです。"); return "TestSearch1"; } @RequestMapping(value = "/test/search/", method = RequestMethod.POST) public String TestSearch1(@ModelAttribute SearchForm form, Model model) { TestDto test= testService.SearchTest1(form.getName()); model.addAttribute("test",test); return "redirect:/test/search"; } に変更したところTestSearch1.jspが動きました ですが、文字を入力するとエラーがでます。 400エラーです。 警告もでません。
akio221

2016/10/26 00:40 編集

>ですが、文字を入力するとエラーがでます。 と、簡略されていますが、フォームで入力を行い、サーバに送信した結果、 400となるのですよね。 まず、HTTPのプロトコルを理解してください。 ステータスの意味くらいはGoogleで検索して来てください。
gik

2016/10/26 08:14 編集

あ、すいません。要求の形式がただしくないんですよね。 データベースの中には MyBatisの全件取得サンプルです 1 : oboka---編集 3 : gaku 編集 5 : hji 編集 6 : jki 編集 がはいっているんですが、400エラーでした。 文字化けも修正してみたんですが、わからないです。
akio221

2016/10/26 08:08

>あ、すいません。要求の形式がただしくないんですよね。 そうです。サーバーに正しいURLを要求できていないのです。 クライアントのブラウザからPOSTなりGETなりで要求したURLが 該当するRequestMappingアノテーションで分離したとき、 正しく分解できない形なのです。 ゆえに、アノテーションの形式と、クライアントが投げるURLをじっくりと 見比べてください。 >データベースの中にはMyBatisの全件取得サンプルです サーバとの通信ができるようになってから考えてください。
gik

2016/10/26 09:13 編集

クライアントのブラウザからPOSTなりGETなりで要求したURLが 該当するRequestMappingアノテーションで分離したとき、 正しく分解できない形なのです。 このヒントをありがとうございます。 このようにかえてみました。 ですが、まだ動きません。 @RequestMapping(value = "/test/search/", method = RequestMethod.GET) public String TestSearch(Model model) { SearchForm form = new SearchForm(); model.addAttribute("SearchForm", form); model.addAttribute("message", "MyBatisサンプルです。"); return "TestSearch1"; } @RequestMapping(value = "/test/search/{name}", method = RequestMethod.GET) public String TestSearch1(@ModelAttribute SearchForm form, Model model) { TestDto test= testService.SearchTest1(form.getName()); model.addAttribute("test",test); return "redirect:/test/search"; } 後methodの部分をgetにしました。(POSTも試しましたが400エラーでした) しかし、うごかない。 間違っているから動ないのでしょうが、どこが間違っているのでしょうか。 もうすいません。教えてください
akio221

2016/10/26 10:08

なぜ、サーバばかり直すのですか。要求しているURLが正しいのですか。 いい加減頭が痛くなりました。 スクリーンショットから応答したページのURLは、 http://localhost:8080/SpribgKenshu/test/search/ で、エラーページ上部の、要求したURLは http://localhost:8080/SpribgKenshu/test/search/?name=gaku どこの世界にスラッシュの後に?が続くURLがあるのですか。 試行錯誤しておかしなことをやる前にきちんとした知識をつけなさい。 もうこれ以上はお答えしません。
gik

2016/10/26 12:12 編集

すいません。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問