【问题标题】:How to post thymeleaf form data to Controller如何将百里香表单数据发布到控制器
【发布时间】:2021-04-01 22:33:44
【问题描述】:

编码员! 我有一个问题。

我的 thymeleaf 表单数据不会发布到 Controller。 这是我的代码。

百里香

    <form role="form" th:action="@{/board/insertBoard}" th:object="${boardDto}" method="post">
        <input type="text" th:value="${board.boardNo}">
        <input class="form-control" type="text" th:field="*{boardName}" th:value="test" placeholder="게시판 제목을 입력해주세요." aria-label="게시판 제목 삽입용 폼" required="required"/>
        <button class="btn btn-primary" id="insertBoard" type="submit">삽입</button>
    </form>

BoardDto

       private int boardNo;
    private String boardName;

    public int getBoardNo() {
        return boardNo;
    }
    public void setBoardNo(int boardNo) {
        this.boardNo = boardNo;
    }
    public String getBoardName() {
        return boardName;
    }
    public void setUserPwd(String boardName) {
        this.boardName = boardName;
    }

板控制器

    @RestController
@RequestMapping("/board")
public class BoardController {

    @Autowired
    BoardService boardService = new BoardService();

    @Autowired
    PostService postService = new PostService();

    @GetMapping("/boardList/{boardNo}")
    ModelAndView board(@PathVariable(name="boardNo") Integer boardNo) {
        ModelAndView mav = new ModelAndView("board/list");
        mav.addObject("boardDto", new BoardDto());
        mav.addObject("board", boardService.selectBoardById(boardNo));
        mav.addObject("boardList", boardService.selectAllBoard());
        mav.addObject("postList", postService.selectPostByBoard(boardNo));

        return mav;
    }

    @PostMapping("/insertBoard")
    public ModelAndView insertBoard(@ModelAttribute("boardDto") BoardDto boardDto, BindingResult result,
    RedirectAttributes redirect, HttpServletRequest request, HttpServletResponse response) {
        ModelAndView mav = new ModelAndView("board/list");
        System.out.println("---------------------> board!!!!!!!!!!!");
        System.out.println("---------------------> " + boardDto.getBoardNo());
        System.out.println("---------------------> " + boardDto.getBoardName());
        System.out.println("---------------------> board!!!!!!!!!!!");
        boardService.insertBoard(boardDto);
        mav.addObject("board", boardService.selectBoardById(boardDto.getBoardNo()));
        mav.addObject("boardList", boardService.selectAllBoard());
        mav.addObject("postList", postService.selectPostByBoard(boardDto.getBoardNo()));

        return mav;
    }

....

当我尝试插入数据时,控制台返回到我在 Controller 中创建的 sysout 下方。

---------------------> board!!!!!!!!!!!
---------------------> 0
---------------------> null
---------------------> board!!!!!!!!!!!

我想通过Controller中的@ModelAttribute获取数据。 如何在 Controller 中获取此 Dto 数据?

【问题讨论】:

    标签: spring-boot thymeleaf


    【解决方案1】:

    我自己最近开始研究 Thymeleaf。我已经看到您尝试使用值“boardPostData”获取 ModalAttribute,但在 html 中您有另一个名称:th:object="${boardDto}"。可以尝试在 html 中重命名为 boardPostData,或者在您的控制器中重命名为 boardDto?

    【讨论】:

    • 啊..我尝试了各种方法并在那里犯了一个错误。 @ModelAttribue("boardDto") BoardDto boardDto 也不起作用。
    • 在这篇文章 (stackoverflow.com/questions/17669212/…) 我看到,setter 和 getter 应该像你的对象一样命名,例如:setBoardDto getBoardDto
    • 哇!谢谢!! getter 和 setter 中的输入错误。非常感谢
    猜你喜欢
    • 1970-01-01
    • 2021-02-27
    • 2021-03-17
    • 2019-12-26
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 2020-12-30
    • 2018-02-21
    相关资源
    最近更新 更多