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

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

ただいまの
回答率

90.03%

SpringBoot Thymeleaf DBに接続してアップデート、削除をしたい。

受付中

回答 0

投稿

  • 評価
  • クリップ 1
  • VIEW 704

asagi_084

score 10

アプッデート、削除をしたいのですが現在プログラムを実行すると405になってしまうので解決方法を知りたいです。
文法なども間違っていたら訂正をお願いします。
(参考書、SpringBootプログラミング入門)

@Controller  
public class MailAddressController {  

@Autowired  
MailAddressService service;  

/**  
* indexで全部表示  
* @param mav  
* @return  
*/  
@RequestMapping(value = "/", method = RequestMethod.GET)  
public ModelAndView index(ModelAndView mav) {  
mav.setViewName("index");  
List<MailAddressData>list = service.getAll();  
mav.addObject("MailDataList",list);  
return mav;  
}  
@RequestMapping(value = "/", method = RequestMethod.POST)  
@Transactional(readOnly=false)  
public ModelAndView form(  
@RequestParam("id")Long id,  
@RequestParam("name")String name,  
@RequestParam("address")String address,  
ModelAndView mav) {  

MailAddressData mailaddressdata = new MailAddressData(id,name,address);  
service.save(mailaddressdata);  

return new ModelAndView("redirect:/");  

}  

/**  
* 検索用 名前完全一致による検索を行う。  
* @param mav  
* @return  
*/  
@RequestMapping(value = "/find", method = RequestMethod.GET)  
public ModelAndView find(ModelAndView mav) {  
mav.setViewName("find");  
mav.addObject("value","");  
List<MailAddressData>list = service.getAll();  
mav.addObject("MailDataList",list);  
return mav;  
}  

@RequestMapping(value = "/find", method = RequestMethod.POST)  
@Transactional(readOnly=false)  
public ModelAndView search  
(@RequestParam("find") String param,ModelAndView mav) {  
mav.setViewName("find");  
if(param == "") {  
mav = new ModelAndView("redirect:/find");  
} else {  
List<MailAddressData>list = service.findByName(param);  
mav.addObject("MailDataList",list);  
}  
return mav;  
}  



/**  
* アップデートを行う。  
* @param mailladdressdata  
* @param id  
* @param mav  
* @return  
*/  
@RequestMapping(value = "/update/{id}", method = RequestMethod.GET)  
public ModelAndView edit(@RequestParam("id") Long id,ModelAndView mav) {  
mav.setViewName("update");  
MailAddressData data = service.findOne(id);  
mav.addObject("MailDataList",data);  
return mav;  
}  

@RequestMapping(value = "/update", method = RequestMethod.POST)  
@Transactional(readOnly=false)  
public ModelAndView update(@ModelAttribute MailAddressData mailaddressdata,  
ModelAndView mav) {  
service.save(mailaddressdata);  
return new ModelAndView("redirect:/");  
}  

/**  
* 削除用  
* @param id  
* @param mav  
* @return  
*/  
@RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)  
public ModelAndView delete(@RequestParam("id") Long id,  
ModelAndView mav) {  
mav.setViewName("delete");  
MailAddressData mailaddressdata = service.findOne(id);  
mav.addObject("MailDataList",mailaddressdata);  
return mav;  
}  

@RequestMapping(value = "/delete", method = RequestMethod.POST)  
@Transactional(readOnly=false)  
public ModelAndView remove(@RequestParam long id,  
ModelAndView mav) {  
service.delete(id);  
return new ModelAndView("redirect:/");  
}  

}  

lang-Service```
@Service
public class MailAddressService {

@Autowired
MailAddressRepository repository;
public List<MailAddressData> getAll(){
return repository.findAll();
}
public MailAddressData save(MailAddressData mailaddressdata) {
return repository.save(mailaddressdata);

}
public List<MailAddressData> findByName(String name) {
return repository.findByName(name);
}

public  MailAddressData findOne(Long id) {
return repository.getOne(id);
}

public MailAddressData updata(MailAddressData mailladdressdata ) {
return repository.save(mailladdressdata);

}

public void delete(Long id) {
repository.delete(id);
}

}

<!DOCTYPE HTML>  
<html xmlns:th="http://www.thymeleaf.org">  
<head>  
<title>MailAddres</title>  
</head>  
<body>  
<!-- 登録用 -->  
<table>  
<form method="post" action="/">  
<tr>  
<td>  
<label for="name">名前</label>  
</td>  
<td>  
<input type="text" name="name" />  
</td>  
</tr>  

<tr>  
<td>  
<label for="address">アドレス</label>  
</td>  
<td>  
<input type="text" name="address" />  
</td>  
</tr>  

<tr>  
<td>  
</td>  
<td>  
<input type="submit" />  
</td>  
</tr>  
</form>  
</table>  
<hr/>  
<!-- 検索用 -->  
<form method="get" action="/find"><input type="submit" value="検索ページ" /></form><br/>  
<hr/>  
<!-- 全件表示 -->  
<table>  
<tr>  
<th>ID</th>  
<th>名前</th>  
<th>mail</th>  
</tr>  
<tr th:each="obj : ${MailDataList}">  
<td th:text="${obj.id}"></td>  
<td th:text="${obj.name}"></td>  
<td th:text="${obj.address}"></td>  
<td>  
<form action="/update/" method="GET" >  
<input type="submit" value="更新" />  
<input type="hidden" name="id" th:value="${obj.id}" />  
</form>  
</td>  
<td>  
<form action="/delete/" method="GET" >  
<input type="submit" value="削除" />  
<input type="hidden" name="id" th:value="${obj.id}" />  
</form>  
</td>  
</tr>  
</table>  

</body>  
</html>  

lang-update.html```
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<title>top page</title>
<meta http-equiv="Content-Type"
content="text/html; charset=UTF-8" />
</head>
<body>
<table>
<form method="post" action="/updata" th:object="${MailDataList}">
<input type="hidden" name="id" th:value="*{id}" />
<tr>
<td>
<label for="name">名前</label>
</td>
<td>
<input type="text" name="name" th:value="*{name}" />
</td>
</tr>
<tr>
<td>
<label for="address">メールアドレス</label>
</td>
<td>
<input type="text" name="address"  th:value="*{address}" />
</td>
</tr>
<tr>
<td>

</td>
<td>
<input type="submit" />
</td>
</tr>
</form>

<form method="get" action="/"><input type="submit" value="戻る" /></form>
</body>
</html>
lang-Repository
@Repository
public interface MailAddressRepository extends JpaRepository<MailAddressData, Long> {

//名前完全一致。
public List<MailAddressData>findByName(String s);

//idを引数にデータを取り出す
public MailAddressData findById(Long name);

//あいまい検索
public List<MailAddressData> findByNameLike(String name);

}

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • 退会済みユーザー

    退会済みユーザー

    2018/10/15 10:15

    ①試したことを記載してください ②コードの表記崩れを直してください

    キャンセル

まだ回答がついていません

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

  • ただいまの回答率 90.03%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る