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

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

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

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

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

受付中

編集画面を表示させたい。

ttorubou
ttorubou

総合スコア0

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

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

1回答

0リアクション

0クリップ

266閲覧

投稿2022/09/10 08:19

前提

社員管理システムを作っています。
社員編集機能を実装したいのですが、実行するとエラーが起こってしまいます。

実現したいこと

まず画面を表示させたい

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

http://localhost:8080/

There was an unexpected error (type=Internal Server Error, status=500). The given id must not be null!; nested exception is java.lang.IllegalArgumentException: The given id must not be null! org.springframework.dao.InvalidDataAccessApiUsageException: The given id must not be null!; nested exception is java.lang.IllegalArgumentException: The given id must not be null!

該当のソースコード(EditController.java)

@RequestMapping @RequiredArgsConstructor @Controller public class EditController { @Autowired private EditService editService; @SuppressWarnings("unused") @GetMapping(value = "/edit1") public String index(Model model) { EditRequest editRequest = new EditRequest(); return "html/edit"; } /** * ユーザー編集画面を表示 * */ @GetMapping(value = "/") public String displayEdit(EditRequest editRequest, Model model) { Edit edit = editService.findById(editRequest.getUser_id()); EditRequest editRequest1 = new EditRequest(); editRequest1.setUser_id(edit.getUser_id()); editRequest1.setName(edit.getName()); editRequest1.setName_kana(edit.getName_kana()); editRequest1.setPassword(edit.getPassword()); editRequest1.setUpn(edit.getUpn()); editRequest1.setBirthday(edit.getBirthday()); editRequest1.setRole_code(edit.getRole_code()); editRequest1.setPrefecture_code(edit.getPrefecture_code()); editRequest1.setDepartment_code(edit.getDepartment_code()); editRequest1.setEntry_date(edit.getEntry_date()); editRequest1.setProfile_image(edit.getProfile_image()); // List<Edit> editList = editService.findAll(); model.addAttribute("editRequest", editRequest1); return "html/edit"; } @RequestMapping("/") public String update(@Valid EditRequest editRequest, BindingResult bindingResult) { if (bindingResult.hasErrors()) { return "html/edit"; } // ユーザー情報の更新 return "redirect:/editcomplete"; } //ぷろふぃ^る画像のアップロード @ResponseBody @PostMapping(value = "upload" , consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public Object upload(@RequestPart("file") MultipartFile filePart) throws IOException { File file = File.createTempFile(UUID.randomUUID().toString(), filePart.getOriginalFilename()); filePart.transferTo(file.toPath()); byte[] bytes = Files.readAllBytes(file.toPath()); //ファイルの読み込み HttpHeaders httpHeaders = new HttpHeaders(); httpHeaders.setContentType(MediaType.parseMediaType(Files.probeContentType(file.toPath()))); httpHeaders.setContentLength(bytes.length); return new HttpEntity<>(bytes, httpHeaders); //レスポンス } }

該当のソースコード(EditService.java)

@Service @Transactional(rollbackFor = Exception.class) public class EditService { @Autowired private EditRepository editRepository; public Edit findById(String user_id) { Edit findId = editRepository.findById(user_id).get(); return findId; } public void update(EditRequest editRequest) { Edit edit = findById(editRequest.getUser_id()); // edit.setUser_id(editRequest.getUser_id()); edit.setName(editRequest.getName()); edit.setName_kana(editRequest.getName_kana()); edit.setPassword(editRequest.getPassword()); edit.setUpn(editRequest.getUpn()); edit.setBirthday(editRequest.getBirthday()); edit.setRole_code(editRequest.getRole_code()); edit.setPrefecture_code(editRequest.getPrefecture_code()); edit.setDepartment_code(editRequest.getDepartment_code()); edit.setEntry_date(editRequest.getEntry_date()); edit.setProfile_image(editRequest.getProfile_image()); editRepository.save(edit); } }

該当のソースコード(edit.html)

<html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/thymeleaf-extras-springsecurity5"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="edit.css"> <title>社員編集・削除</title> </head> <body> <div class="wrapper"> <div class="ground"> <div class="edit"> <p>社員編集・削除</p> </div> <form> <input type="file" name="file"/> <button type="submit" formenctype="multipart/form-data" formmethod="post" formaction="/upload">MultipartFile送信</button> </form> <form th:action="@{/}" th:object="${editRequest}" th:method="post"> <div class="center"> <div class="main clearfix"> <table class="main-left"> <tr > <th >ユーザーID</th> <td><input class="user_id" type="text" name="user_id" value="" size="35" th:field="*{user_id}"></td> <td th:if="${#fields.hasErrors('user_id')}" th:errors="*{user_id}">ID Error</td> </tr> <tr > <th >名前</th> <td><input class="name" type="text" name="name" value="" size="35" th:field="*{name}"></td> <td th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</td> </tr> <tr > <th >カナ</th> <td><input class="name_katakana" type="text" name="name_katakana" value="" size="35" th:field="*{name_katakana}"></td> <td th:if="${#fields.hasErrors('name_katakana')}" th:errors="*{name_katakana}">Name_katakana Error</td> </tr> <tr > <th >パスワード</th> <td><input class="password" type="text" name="password" value="" size="35" th:field="*{password}"></td> <td th:if="${#fields.hasErrors('password')}" th:errors="*{password}">password Error</td> </tr> <tr > <th >メールアドレス</th> <td><input class="email" type="text" name="email" value="" size="35" th:field="*{email}"></td> <td th:if="${#fields.hasErrors('email')}" th:errors="*{email}">email Error</td> </tr> </table> <table class="main-right clearfix"> <tr > <th >生年月日</th> <td><input class="birthday" type="date" name="birthday" value="" th:field="*{birthday}"></td> <td th:if="${#fields.hasErrors('birthday')}" th:errors="*{birthday}">birthday Error</td> </tr> <tr > <th >性別</th> <td> <input type="radio" name="gender" value="1"th:field="*{gender}"> 男 <input type="radio" name="gender" value="2"th:field="*{gender}"> 女 </td> <td th:if="${#fields.hasErrors('birthday')}" th:errors="*{birthday}">birthday Error</td> </tr> <tr > <th >出身地</th> <td> <select th:field="*{prefecture}" name="prefecture"> <option value="1">北海道</option> <option value="2">青森県</option> <option value="3">岩手県</option> <option value="4">宮城県</option> <option value="5">秋田県</option>              ~中略~ </select> </td> </tr> <tr > <th >役職</th> <td> <select name="role_code" th:field="*{role_code}"> <option value="C">主任</option> <option value="CEO">代表取締役社長</option> <option value="D">係長</option> <option value="DD">本部長</option> <option value="DM">秋田県</option> <option value="M">山形県</option> <option value="MD">福島県</option> <option value="S">茨城県</option> <option value="SM">福島県</option> <option value="SMD">茨城県</option> </select> </td> <td th:if="${#fields.hasErrors('role_code')}" th:errors="*{role_code}">role_code Error</td> </tr> <tr > <th >部署</th> <td> <select name="department_code" th:field="*{department_code}"> <option value="0">本社</option> <option value="1">東京支店</option> <option value="2">神奈川支店</option> <option value="3">大阪支店</option> <option value="4">仙台支店</option> <option value="5">新潟支店</option> </select> </td> </tr> <tr > <th >入社日</th> <td> <input class="hire_date" type="date" name="hire_date" value="" th:field="*{hire_date}"> </td> <td th:if="${#fields.hasErrors('hire_date')}" th:errors="*{hire_date}">hire_date Error</td> </tr> </table> </div> <div class="botton clearfix"> <button class="left-footer" type="submit" onclick="">変更</button> <button class="right-footer" type="submit" onclick="">削除</button> </div> </div> <!-- <input type="hidden" name="user_id" th:value="${param.user_id[0]}">--> </form> </div> </div> </body> </html>

該当のソースコード(EditRequest.java)

@EqualsAndHashCode(callSuper=false) @Data public class EditRequest implements Serializable { /** * ID */ @NotNull private String user_id; /** * 名前 */ @NotEmpty(message = "名前を入力してください") @Size(max = 20, message = "名前は20桁以内で入力してください") private String name; /** * 名前カナ */ @NotEmpty(message = "名前をカナで入力してください") @Size(max = 50, message = "名前は50桁以内で入力してください") private String name_kana; /** * パスワード */ @NotEmpty(message = "パスワードを入力してください") @Size(max = 100, message = "名前は100文字以内で入力してください") private String password; /** * メール */ @NotEmpty(message = "メールアドレスを入力してください") @Size(max = 50, message = "名前は50文字以内で入力してください") private String upn; /** * 誕生日 */ @NotEmpty(message = "生年月日を入力してください") private Date birthday; /** * 性別 */ @NotEmpty(message = "性別を選択してください") private String gender; /** * 役職 */ @NotEmpty(message = "役職を選択してください") private String role_code; /** * 出身地 */ @Nullable private String prefecture_code; /** * 部署 */ @Nullable private String department_code; /** * 入社日 */ @NotEmpty(message = "入社日を入力してください") private Date entry_date; /** * プロフィール画像 */ @Nullable private String profile_image; }

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

・spring boot
・thymeleaf
・postgerSQL
・java

以下のような質問にはリアクションをつけましょう

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

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Java

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

バリデーション

Validationとは特定の入力データが、求められた条件に当てまっているかをチェックするために使われます。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

Spring Boot

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