私はThymeleafを初めて使用していますが、最初のレコードを削除しようとしていますが、http://localhost:8080/findall?_method=delete
にリダイレクトされています。私はすべてのレコードを削除することができますが、彼らは適切なURL http://localhost:8080/delete/{id}
にリダイレクトしています(拳1を除く)。HTMLの最初の送信ボタンが別のURLにリダイレクトしています
郵便配達員から「http://localhost:8080/delete/ {id}」を押してレコードを削除しようとすると、そのレコードを削除することができます。したがって、これは.htmlファイルで何かする必要があります。ここで
はdisplay.jspファイルのコードです:私は、削除ボタンをクリックすると
<!DOCTYPE HTML>
<html xmlns:th="http://www.thymeleaf.org">
<head>Registration Table
</head>
<body>`
`<form>
<table border="1">
<tr>
<th>Id</th>
<th>Name</th>
<th>Password</th>
<th>Delete</th>
</tr>
<tr th:each="list : ${list}">
<td th:text="${list.id}">ID</td>
<td th:text="${list.userName}">Name</td>
<td th:text="${list.userPassword}">Password</td>
<!-- <td><a th:href="@{/delete/{id}}">Edit</a></td> -->
<td>
<form th:action="@{'/delete/{id}'(id=${list.id})}"
th:method="delete">
<input type="submit" value="Delete" />
</form>
</td>
</tr>
</table>
</form>
、ここでは
package com.spring.controller;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.request;
import java.util.List;
import javax.servlet.http.HttpServlet;
import javax.xml.ws.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;
import com.couchbase.client.deps.io.netty.handler.codec.http.HttpResponse;
import com.spring.model.Customer;
import com.spring.repository.CustomerRepo;
@RestController
public class Controller extends HttpServlet {
@Autowired
CustomerRepo rp;
@RequestMapping(method = RequestMethod.GET, value = "/findall")
@ResponseBody
public ModelAndView findall() {
List<Customer> list = (List<Customer>) rp.findAll();
ModelAndView mv = new ModelAndView();
mv.setViewName("display");
mv.addObject("list", list);
for (Customer element : list) {
System.out.println("Element usernane: " + element.getUserName());
System.out.println("Element password: " + element.getUserPassword());
}
mv.addObject("list", list);
return mv;
}
@RequestMapping(method = RequestMethod.GET, value = "/display")
@ResponseBody
public List<Customer> display() {
return (List<Customer>) rp.findAll();
}
@RequestMapping("/")
public ModelAndView home() {
System.out.println("display home");
ModelAndView mv = new ModelAndView("home");
return mv;
}
@RequestMapping(method = RequestMethod.DELETE, value = "/delete/{id}")
public ModelAndView deleteCourse(@PathVariable Long id) {
System.out.println("deleting" + id);
rp.delete(id);
ModelAndView mv = new ModelAndView("redirect:home");
return new ModelAndView("redirect:home");
}
}
controller.javaです最初のレコード "Ravi"を削除するにはm eをURL「http://localhost:8080/findall?_method=delete」に変更し、レコードを削除しないでください(私はURL「http://localhost:8080/delete/1」に連れて行きます)。しかし、他のボタンをクリックしてもうまくいき、レコードを削除しています。
ブラウザのHTMLコードも確認しました。各レコードに同じHTMLコードが生成されるわけではありません。 これは非常に簡単な修正でなければなりませんが、私は、stackoverflowのThymeleafで多くのコンテンツを見つけられませんでした。
htmlファイルが疑わしい場合は、ブラウザでそのファイルを見てください - 生成されたhtmlファイルと実際に生成された*実際のリンクを確認してください。 (あなたのブラウザでは、 "ソースを見る"になっています - Thymeleafによって生成された実際のHTMLファイルが表示されます) –