プロファイルビュー


情報のないプロファイルビューと情報を含むプロファイルビューを区別



1行の紹介は、プロファイルを変更できる本人にしか見せません.他のプレイヤーが見に来たときにこのような情報を見たり、プロファイルボタンを変更したりすることはできません.他の情報があれば、もっと見せてあげましょう.

コントローラの追加


AccountController.java
    @GetMapping("/profile/{nickname}")
    public String viewProfile(@PathVariable String nickname, Model model, @CurrentUser Account account) {
        Account byNickname = accountRepository.findByNickname(nickname);
        if (nickname == null) {
            throw new IllegalArgumentException(nickname + "에 해당하는 사용자가 없습니다.");
        }

        model.addAttribute(byNickname);
        model.addAttribute("isOwner", byNickname.equals(account));
        return "account/profile";
    }
ニックネームのリクエストを受信すると、PathVariable宣言を使用して文字列をグループ化します.その後、モデルにニックネームに対応するアカウント情報を入れます.現在のプレイヤーがプロファイルの持ち主かどうかを確認します.(操作権のあるユーザ)AccountRepositoryでニックネーム対応のユーザを検索しnullの場合はエラーページを表示または放出します.該当するプレイヤーがいれば、モデルにbyNicknameを入れて送信します.
Q.このaddAttributeに含まれるオブジェクトの名前は何ですか?
このオブジェクトはaccountタイプのオブジェクトです.
model.addAttribute("email", account.getEmail()); // 이메일 주소
このようにして、私たちが追加した属性名と実際のオブジェクトを追加しました.しかし、ここでは名前を省略したが、実際には「account」が必要だ.指定しない場合は、デフォルトのオブジェクトタイプcamel caseを名前として使用します.
今登録したプレイヤーはメインエネルギーがあるかどうかを加えることができます.(isOwner)
Owner.java
 <p class="lead" th:if="${#strings.isEmpty(account.bio) && isOwner}">
bioがなく、所有者である場合は、説明の行を追加します.
public boolean isOwner(Principal owner);

ガイドテープ

  • listgroup
  • grid
  •  <svg th:if="${#strings.isEmpty(account.profileImage)}" class="img-fluid float-left rounded img-thumbnail"
                         th:data-jdenticon-value="${account.nickname}" width="125" height="125"></svg>
                    <img th:if="${!#strings.isEmpty(account.profileImage)}" class="img-fluid float-left rounded img-thumbnail"
                         th:src="${account.profileImage}"
                         width="125" height="125"/>
    Accountのプロファイル画像が空の場合、JDINCONを使用して生成されます.Accountのプロファイル画像が空でない場合は、accountのプロファイル画像が表示されます.
    まだ解決しなければならない間違いがあります!😭

    temporals

     <span th:text="${#temporals.format(account.joinedAt, 'yyyy년 M월 가입')}" class="col-9"></span>
    加入時間を表示するときにtemporsを使うのは何ですか?日付を表す場合、タイムラインでLocalDateTimeを変換するために、タイムステートオブジェクトが使用されます.
    public final class Temporals {
    
        private final TemporalCreationUtils temporalCreationUtils;
        private final TemporalFormattingUtils temporalFormattingUtils;
        private final TemporalArrayUtils temporalArrayUtils;
        private final TemporalListUtils temporalListUtils;
        private final TemporalSetUtils temporalSetUtils;
    
        public Temporals(final Locale locale) {
            this(locale, ZoneId.systemDefault());
        }
    
        public Temporals(final Locale locale, final ZoneId defaultZoneId) {
            super();
            Validate.notNull(locale, "Locale cannot be null");
            this.temporalCreationUtils = new TemporalCreationUtils();
            this.temporalFormattingUtils = new TemporalFormattingUtils(locale, defaultZoneId);
            this.temporalArrayUtils = new TemporalArrayUtils(locale, defaultZoneId);
            this.temporalListUtils = new TemporalListUtils(locale, defaultZoneId);
            this.temporalSetUtils = new TemporalSetUtils(locale, defaultZoneId);
        }
    出典:インフラストラクチャ白旗仙のSpringとJPAベースのWebアプリケーション開発
    https://jongminlee0.github.io/2020/03/12/thymeleaf/