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

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

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

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

Spring Boot

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

Q&A

解決済

1回答

4694閲覧

addAllAttributesで引数が指定できません

goriwo

総合スコア17

Java

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

Spring Boot

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

0グッド

0クリップ

投稿2021/04/17 22:30

前提・実現したいこと

model.addAllAttributes("users",users);
usersというキー名でuserのListを設定したい

発生している問題・エラーメッセージ

model.addAllAttributes("users",users);

型 Model のメソッド addAllAttributes(Collection<?>) は
引数 (String,List<User>) に適用できません

該当のソースコード

package com.example.demo.controllers; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.DeleteMapping; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PutMapping; import org.springframework.web.bind.annotation.RequestMapping; import com.example.demo.models.User; import com.example.demo.service.UserService; @Controller @RequestMapping("/users") public class UserController { @Autowired private UserService userService; @GetMapping //メソッドの引数にModel型の値を設定,Modelのインスタンスが自動的に渡される public String index(Model model) { List<User> users = userService.findAll(); model.addAllAttributes("users",users); ここでエラー return "users/index"; } @GetMapping("new") public String newUser(Model model) { return "users/new"; } @GetMapping("{userid}/edit") //@PathVariableを設定するとURL上の値を取得 public String edit(@PathVariable Integer userid,Model model) { User user = userService.findOne(userid); model.addAttribute(user); return "users/edit"; } @GetMapping("{userid}") public String show(@PathVariable Integer userid,Model model) { User user = userService.findOne(userid); model.addAttribute(user); return "users/show"; } @PostMapping //@ModelAttributeをつけると送信されたリクエストのbodyの情報を取得できる public String create(@ModelAttribute User user) { userService.save(user); //createメソッドの処理が終わった後indexに戻る return "redirect:/users"; } @PutMapping("{id}") public String Update(@PathVariable Integer userid,@ModelAttribute User user) { user.setId(userid); userService.save(user); return "redirect:/users"; } @DeleteMapping("{userid}") public String destroy(@PathVariable Integer userid) { userService.delete(userid); return "redirect:/users"; } }
package com.example.demo.models; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; @Entity//DBに登録、更新、保持 public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY)//主キーの自動生成(id) @Column(name="userid")//カラムの指定 private Integer userid; @Column(name="nickname") private String nickname; @Column(name="age") private Integer age; @Column(name="hobby") private String hobby; public Integer getId() { return userid; } public void setId(Integer userid) { this.userid = userid; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getHobby() { return hobby; } public void setHobby(String hobby) { this.hobby = hobby; } @Override public String toString() { return "User [userid="+ userid +",nickname="+ nickname +",age="+ age +",hobby="+ hobby +"]"; } }
package com.example.demo.service; import java.util.List; import java.util.Optional; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.example.demo.models.User; import com.example.demo.repositries.UserRepository; @Service //サーバ処理を実装 public class UserService { @Autowired //Beanをインジェクトしてnewしなくても使える private UserRepository userRepository; public List<User> findAll(){ return userRepository.findAll(); } public User findOne(Integer userid) { Optional<User> user = userRepository.findById(userid); if(user.isPresent()) { return user.get();//get()で値を返す }else { return null; } // return userRepository.findById(userid); } public User save(User user) { return userRepository.save(user); } public void delete(Integer userid) { userRepository.deleteById(userid); } }

試したこと

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

この記事を参考にしてつくりました

引用テキストhttps://qiita.com/ozaki25/items/3b348874b6db5ab4f04f#%E5%86%85%E5%AE%B9

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

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

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

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

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

guest

回答1

0

ベストアンサー

この記事を参考にしてつくりました

と仰っていますが、当該記事にaddAllAttributesに対する言及はないですね。
addAttributeはありますが。

エラーの通り・・・ではありますが、まずこういうときはドキュメントで機能仕様を確認するのが定石です。
インターフェース Model#addAllAttributes

Model addAllAttributes(Collection<?> attributeValues)

各要素の属性名の生成を使用して、提供された Collection のすべての属性をこの Map にコピーします。

もしくは

Model addAllAttributes(Map<String,?> attributes)

指定された Map のすべての属性をこの Map にコピーします。

いずれもString,List<User> を受け入れられる引数ではありません。
おそらくMap<String,List<User>> の形式にすれば通るのではないでしょうか。

要は「1つ1つaddAttributeするのではなくキー:バリューのMapで一気に情報を指定する」というのがaddAllAttributesの役割です。

投稿2021/04/17 23:40

m.ts10806

総合スコア80875

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

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

goriwo

2021/04/18 04:41

ありがとうございました! 参考になります
m.ts10806

2021/04/18 06:12

参考にするのはあくまでドキュメントマターにするとこの手の問題は質問せずとも解決できるようになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問