前提・実現したいこと
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
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/18 04:41
2021/04/18 06:12