プロファイルビュー
14547 ワード
情報のないプロファイルビューと情報を含むプロファイルビューを区別
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);
ガイドテープ
<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/
Reference
この問題について(プロファイルビュー), 我々は、より多くの情報をここで見つけました https://velog.io/@leyuri/프로필-뷰テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol