<form action="board" method="post">
<input type="hidden" name="_method" value="delete">
<input type="hidden" name="board_no" value="<c:out value='${board.board_no }' />">
<input type="submit" value="Delete message">
</form>
我正在嘗試使用上面的表單標記發送帶有 DELETE 方法的請求。但我一直未能得到正確的結果。
上面的代碼導致使用 POST 方法發送,而不是 DELETE。
但是,下面將值 'delete' 替換為 'put' 的代碼運行良好。
<form action="board" method="post">
<input type="hidden" name="_method" value="put">
...
</form>
我想知道使用帶有“delete”值的輸入標簽是否不是使用 Delete 方法發送請求的正確方法。
Java控制器:
@PostMapping("/board")
public String insertBoard2(Board board) {
service.insertOneBoard(board);
return "redirect:/boardList";
}
@PutMapping("/board")
public String updateBoard2(Board board) {
service.updateOneBoard(board);
return "redirect:/board?board_no=" board.getBoard_no();
}
@DeleteMapping("/board")
public String deleteBoard(Board board) {
service.deleteOneBoard(board.getBoard_no());
return "redirect:/boardList";
}
表單提交時的錯誤資訊:
org.springframework.dao.DataIntegrityViolationException:
### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: (conn=2090) Column 'board_title' cannot be null
### The error may exist in file [C:\Users\***\eclipse-workspace\RestfulBBS-Spring_Framework-MyBatis\target\classes\BoardMapper.xml]
### The error may involve boardMapper.insertOne-Inline
### The error occurred while setting parameters
### SQL: insert into board(board_no, member_id, board_title, board_content, board_hit, write_date, is_notice) values (default, ?, ?, ?, default, now(), ?)
### Cause: java.sql.SQLIntegrityConstraintViolationException: (conn=2090) Column 'board_title' cannot be null
報錯資訊顯示請求是通過POST方式發送的。(insert所需的引數沒有說明。)
uj5u.com熱心網友回復:
我解決了向 web.xml 添加過濾器的問題,如下所示。
<filter>
<filter-name>httpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>httpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
在 Spring 框架中使用 PUT、DELETE 方法需要額外的過濾器。
uj5u.com熱心網友回復:
<form action="board" method="post">
此行指的是當來自表單的請求發送到 servlet 時在后端呼叫的方法。
然后你假設這一行:
<input type="hidden" name="_method" value="delete">
生成洗掉方法。但事實并非如此。這可能是:因為在您的 Java 代碼中沒有這樣定義 delete 方法。
請在您的 Java 代碼中發布帖子的方法,因為我們現在無法進一步除錯。
我將假設以下內容: post 方法已在您的應用程式中設定,它在 spring 中成功呼叫了 servlet,但在內部 put 和 delete 之間沒有區別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/373352.html
上一篇:如何將帶有thymeleaf的物件傳遞給javaspring控制器?
下一篇:Heredoc與tmpfile
