💭

【初心者向け/ITスクール 74日】個人プロジェクトスタート9日目

2023/11/02に公開

はじめに

今日は、9日目の日です! ログイン機能と会員情報修正、validationなどを作成しました。
今日中に管理者ページも作成し、商品登録と管理、会員リストなどを見る昨日を作成したいと
思います。

今日はredirectと@PathVariable, Sessionで苦戦しました、、一生忘れられないと思います。

redirect

redirect時のリンクはtemplateではなく、Springのcontroller mappingに繋がることが分かりました。これで2時間を無題にしましたが、PRGパターンは一生わすれずできると思います。

Session, @PathVariable

問題点:update時に、動的urlが作られない。会員情報照会時にSessionを入れれば、Formオブジェクトからどの風にValidationをするかが分からない。

解決方法

1.SessionIdとSessionオブジェクトをしっかり分かれて覚えること

LoginController
@GetMapping("/")
    public String homeLogin(@SessionAttribute(name="loginMember", required = false) Member loginMember, Model model){

       
        if(loginMember == null){
            return "home";
        }

      
        model.addAttribute("member",loginMember);
        return "loginhome";
    }

2. Get requestをするリンクにsessionのkeyから値を出す。

<a class="header__menu__user" th:href="@{|/members/${member.memberId}/update|}" href="/update"><i class="fa-solid fa-user"></i
                ></a>

3. Get requestをするリンクにsessionのkeyから値を出す。

MemberController
@GetMapping(value = "/{memberId}/update")
          public String goUpdatePage(@PathVariable("memberId") String memberId, @ModelAttribute("memberUpdateForm")MemberUpdateForm memberUpdateForm) {
             memberRepository.findById(memberId);
             return "members/updateForm";
        }

<a>で簡単にpost要請をする方法

<a class="header__menu__user"  href="javascript:void(0)" onClick="javascript:logout()">
                <i class="fa-solid fa-right-from-bracket"></i></a>

'use strict'
function logout() {
    let f = document.createElement('form');
    f.setAttribute('method', 'post');
    f.setAttribute('action', '/logout');
    document.body.appendChild(f);
    f.submit();
}

Discussion