Controller

이 예에서는 로그인 한 UserDetails 구현체인 Reader 세션 객체를 @Controller의 메서드의 파라미터로 받아올 수 있음을 보인다.

package com.example.demo.controller;

import com.example.demo.repository.ReadingListRepository;
import com.example.demo.vo.Book;
import com.example.demo.vo.Reader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


import java.util.List;

import java.util.Objects;
import java.util.Optional;

@RequestMapping("/")
@Controller
public class ReadingListController {

    private ReadingListRepository readingListRepository;

    @Autowired
    public ReadingListController(ReadingListRepository readingListRepository) {
        this.readingListRepository = readingListRepository;
    }

    @RequestMapping(method = RequestMethod.GET)
    public String readersBooks(Reader reader, Model model) {
        //여기서 파라미터로 받아 온 Reader reader 는 로그인 한 UserDetails 구현체이다.  
        List<Book> bookList = readingListRepository.findByReader(reader);
        if (Objects.nonNull(bookList)) {
            model.addAttribute("books", bookList);
            model.addAttribute("reader", reader);
        }
//        Optional.ofNullable(bookList)
//                .ifPresent((self) -> {
//                    model.addAttribute("books", bookList);
//                    model.addAttribute("reader", reader);
//                });

        return "readingList";
    }

    @RequestMapping(method = RequestMethod.POST)
    public String addToReadingList(Reader reader, Book book) {
        //여기서 파라미터로 받아 온 Reader reader 는 로그인 한 UserDetails 구현체이다.  
        book.setReader(reader);
        readingListRepository.save(book);

        return "redirect:/";
    }

}

results matching ""

    No results matching ""