教えてください
html
1<!DOCTYPE html> 2<html xmlns:th="http://www.thymeleaf.org" 3 xmlns:sec="http://www.thymeleaf.org/extras/spring-security"> <!-- ThymeleafのSpring Security連携機能の名前空間を設定 --> 4<head> 5 <meta charset="utf-8"/> 6 <title>婚活サイト</title> 7 <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" 8 th:href="@{/webjars/bootstrap/3.3.7/css/bootstrap.min.css}"/> 9 <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" 10 th:href="@{/webjars/bootstrap/3.3.7/css/bootstrap-theme.min.css}"/> 11</head> 12 13<body> 14 15<div class="container"> 16 17 <h2> 18 <span sec:authentication="principal.user.mail">メアド</span> 19 <!-- sec:authenticationで認証ユーザー情報にアクセスできる 、principalプロパティでUserDetailsオブジェクトにアクセスできるので、principal.user.mailでログインユーザー名が分かる--> 20 さん、ログイン中 21 </h2> 22 23 24 25 <form th:action="@{/logout}" method="post"> 26 <input type="submit" class="btn btn-default btn-xs" value="ログアウト" /> 27 </form> 28 29 <form th:action="@{/konkatsu/createProfile}" th:object="${profileForm}" class="form-signin" enctype="multipart/form-data" method="post" ><!-- th:actionでformタグのaction属性の内容を置換できる --> 30 <!-- action:フォームの送信ボタンを押して送信されるデータの送信先URLを指定する --> 31 <!-- th:object="${profileForm}":profileFormクラスのnameなどを使えるようにする --> 32 33 <!-- 部品がテキストフィールドなら初期値として入力欄に表示されます。テキストが書き換えられればそれが value値になり、name属性とセットで送信されます。 34 また、ラジオボタンやチェックボックスでは、選択された値の名称となり、name"src/main/resources/templates/konkatsu/profileForm.html"属性とセットで送信されます。 35 送信やリセットボタンなどの場合はボタン上に表示されます--> 36 37 <h2 class="form-signin-heading">Myプロフィールフォーム</h2> 38 39 <div th:if="${param.error}" class="alert alert-danger"> 40 正しく入力してください。 41 </div> 42 43 44 45 <span sec:authentication="principal.user.userId">ログインID表示</span> 46 47 <input type="hidden" name="id" th:value="${user.userId}"/> 48 49 50 <div class="form-group" > 51 <label>氏名</label> 52 <!-- プログラムに送信するデータに名前を付けるのがname属性 --> 53 <input type="text" class="form-control" name="name" placeholder="(例) 山田太郎" required="required" 54 autofocus="autofocus"/> 55 </div> 56 57 <div class="form-group"> 58 <label>性別</label> 59 <select class="form-control" name="genderId" > 60 <option value="1">男</option> 61 <option value="2">女</option> 62 </select> 63 </div> 64 65 <div class="form-group"> 66 <label>生年月日</label> 67 <input type="text" class="form-control" name="birthday" placeholder="(例) 2017-01-01" required="required"/> 68 </div> 69 70 <div class="form-group"> 71 <label>身長</label> 72 <input type="text" class="form-control" name="height" placeholder="(例)180cm" required="required"/> 73 </div> 74 75 <div class="form-group"> 76 <label>職業</label> 77 <select class="form-control" name="occupationId" > 78 <!-- <option value='' disabled selected style='display:none;'>職業</option> --> 79 <option value="1">公務員系</option> 80 <option value="2">医療・介護・福祉系</option> 81 <option value="3">教育系</option> 82 <option value="4">金融系</option> 83 <option value="5">IT・電気・電子系</option> 84 <option value="6">製造・建築・土木系</option> 85 <option value="7">アート・デザイン系</option> 86 <option value="8">音楽・イベント系</option> 87 <option value="9">芸能・マスコミ系</option> 88 <option value="10">サービス系</option> 89 <option value="11">飲食系</option> 90 <option value="12">ファッション・美容系</option> 91 <option value="13">スポーツ・インストラクター系</option> 92 <option value="14">自営業</option> 93 <option value="15">その他</option> 94 </select> 95 </div> 96 97 <div class="form-group"> 98 <label>年収</label> 99 <input type="number" class="form-control" name="income" placeholder="(例)600万円" required="required"/> 100 </div> 101 102 <div class="form-group"> 103 <label for="InputTextarea">自己紹介文</label> 104 <textarea class="form-control" name="text" rows="6" placeholder="自己PRをしてください"></textarea> 105 </div> 106 107 <div class="form-group"> 108 <label>プロフィール画像</label> 109 <input type="file" class="form-control" name="image" placeholder="写真" required="required"/> 110 </div> 111 112 113 <button class="btn btn-lg btn-primary btn-block" type="submit">登録する</button> 114 </form> 115 116 <form th:action="@{/konkatsu/list}" method="get"> 117 <input type="submit" class="btn btn-default" value="ユーザー一覧へ"/> 118 </form> 119 120</div> 121 122 123</body> 124</html> 125
ログインしているユーザーIDは
<span sec:authentication="principal.user.userId">
で表示できるのですが
ログインしているIDをpostで送って
プロフィール登録をしようと思っております
その場合
<input type="hidden" name="id" th:value=" "/>
??
どのように記述すれば良いのでしょうか??
LoginUserDetails
java
1//UserDetailsの実装クラス 2 3package com.example.konkatsu.service; 4 5import org.springframework.security.core.authority.AuthorityUtils; 6 7import com.example.konkatsu.domain.User; 8 9import lombok.Data; 10 11@Data 12public class LoginUserDetails extends org.springframework.security.core.userdetails.User{ 13 private final User user; 14 15 public LoginUserDetails(User user){ 16 super(user.getMail(), user.getPass(), AuthorityUtils.createAuthorityList("ROLE_USER")); 17 this.user = user; 18 } 19 20} 21
LoginUserDetailsService
java
1//usersテーブルから取得した情報を用いて LoginUserDetailsを作るクラス 2 3 4 5package com.example.konkatsu.service; 6 7import org.springframework.beans.factory.annotation.Autowired; 8import org.springframework.security.core.userdetails.UserDetails; 9import org.springframework.security.core.userdetails.UserDetailsService; 10import org.springframework.security.core.userdetails.UsernameNotFoundException; 11import org.springframework.stereotype.Service; 12 13import com.example.konkatsu.domain.User; 14import com.example.konkatsu.repository.RegisterUserRepository; 15 16@Service 17public class LoginUserDetailsService implements UserDetailsService { 18 19 @Autowired 20 RegisterUserRepository registerUserRepository; 21 22 @Override 23 //loadUserByUsernameでは、UserDetails形式で値を返すという宣言 24 public UserDetails loadUserByUsername(String mail) throws UsernameNotFoundException { 25 User user = registerUserRepository.findByMail(mail); 26 if(user == null){ 27 throw new UsernameNotFoundException("ユーザーが見つかりません"); 28 } 29 return new LoginUserDetails(user); //UserDetails形式で値を返すという宣言 30 } 31} 32
回答2件
あなたの回答
tips
プレビュー