Forms @请求映射可以';无法捕获url
我用一个表单声明控制器。但当我使用删除url时,捕获404错误 我有一个带有代码的表:Forms @请求映射可以';无法捕获url,forms,spring-mvc,servlets,controller,Forms,Spring Mvc,Servlets,Controller,我用一个表单声明控制器。但当我使用删除url时,捕获404错误 我有一个带有代码的表: <c:forEach items="${model.books}" var="book"> <tr align="left" height="100%"> <td>${book.name}</td> <td>${book.description}</td>
<c:forEach items="${model.books}" var="book">
<tr align="left" height="100%">
<td>${book.name}</td>
<td>${book.description}</td>
<td>${book.year}</td>
<td></td>
<%--<td>${book.authorNames}</td>--%>
<sec:authorize access="hasRole('ROLE_ADMIN')">
<td>
<a href="${pageContext.request.contextPath}/BookList.vw/${book.id}">Delete</a>
<a href="${pageContext.request.contextPath}/EditBook.vw/${book.id}">Edit</a>
</td>
</sec:authorize>
</tr>
</c:forEach>
${book.name}
${book.description}
${book.year}
和我的控制器:
@Controller
@RequestMapping("/BookList.vw")
public class BookListController {
@Autowired
private IBookService bookService;
public String getModelName() {
return "BookList";
}
@RequestMapping(value = "/", method = RequestMethod.GET)
protected ModelAndView openMain() throws Exception {
Map<String, Object> model = new HashMap<String, Object>();
List<Book> books = bookService.listBooks();
model.put("books", books);
return new ModelAndView(getModelName(), "model", model);
}
@RequestMapping(value = {"/delete"}, method = RequestMethod.POST)
public ModelAndView delete(@RequestParam("id") Integer id) throws Exception {
bookService.removeBook(id);
return new ModelAndView(getModelName());
}
}
@Controller
@RequestMapping("/EditBook.vw")
public class EditBookController{
@Autowired
private IBookService bookService;
@Autowired
private IAuthorService authorService;
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
protected ModelAndView openMain(@PathVariable Integer id) throws Exception {
Map<String, Object> model = new HashMap<String, Object>();
List<Book> books = bookService.listBooks();
Book book = new Book();
for (Book book1 : books) {
if(book1.getId() == id)
book = book1;
}
model.put("book", book);
return new ModelAndView("EditBook", "model", model);
}
}
@控制器
@请求映射(“/BookList.vw”)
公共类BookListController{
@自动连线
私人IBookService图书服务;
公共字符串getModelName(){
返回“书单”;
}
@RequestMapping(value=“/”,method=RequestMethod.GET)
受保护的ModelAndView openMain()引发异常{
映射模型=新的HashMap();
List books=bookService.listBooks();
模型。放置(“书籍”,书籍);
返回新的ModelAndView(getModelName(),“model”,model);
}
@RequestMapping(值={“/delete”},方法=RequestMethod.POST)
公共ModelAndView删除(@RequestParam(“id”)整数id)引发异常{
bookService.removeBook(id);
返回新的ModelAndView(getModelName());
}
}
通过第二个URL,我也发现了404错误。我不明白为什么。
编辑本控制器:
@Controller
@RequestMapping("/BookList.vw")
public class BookListController {
@Autowired
private IBookService bookService;
public String getModelName() {
return "BookList";
}
@RequestMapping(value = "/", method = RequestMethod.GET)
protected ModelAndView openMain() throws Exception {
Map<String, Object> model = new HashMap<String, Object>();
List<Book> books = bookService.listBooks();
model.put("books", books);
return new ModelAndView(getModelName(), "model", model);
}
@RequestMapping(value = {"/delete"}, method = RequestMethod.POST)
public ModelAndView delete(@RequestParam("id") Integer id) throws Exception {
bookService.removeBook(id);
return new ModelAndView(getModelName());
}
}
@Controller
@RequestMapping("/EditBook.vw")
public class EditBookController{
@Autowired
private IBookService bookService;
@Autowired
private IAuthorService authorService;
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
protected ModelAndView openMain(@PathVariable Integer id) throws Exception {
Map<String, Object> model = new HashMap<String, Object>();
List<Book> books = bookService.listBooks();
Book book = new Book();
for (Book book1 : books) {
if(book1.getId() == id)
book = book1;
}
model.put("book", book);
return new ModelAndView("EditBook", "model", model);
}
}
@控制器
@请求映射(“/EditBook.vw”)
公共类EditBookController{
@自动连线
私人IBookService图书服务;
@自动连线
私有IAuthorService authorService;
@RequestMapping(value=“/{id}”,method=RequestMethod.GET)
受保护的ModelAndView openMain(@PathVariable Integer id)引发异常{
映射模型=新的HashMap();
List books=bookService.listBooks();
书=新书();
用于(第1册:书籍){
if(book1.getId()==id)
book=book1;
}
模型放置(“书”,书);
返回新模型和视图(“编辑本”、“模型”、“模型”);
}
}
我试着在POST、Get和其他之间更改它。。帮助我?请您的控制器声明只有post请求将执行delete()方法。你应该使用
<form method="post" action="the_delete_URL">
而不是
因为这不是帖子
@RequestMapping(value = "/delete/{id}", method = RequestMethod.GET)
public ModelAndView delete(@PathVariable Integer id) throws Exception {
bookService.removeBook(id);
return new ModelAndView(getModelName());
}
你能试试这个吗?你能检查一下这个[thread]()吗?如果找不到解决方案,请分享你的servletcontex.xmlU需要使用form post而不是href,请再次尝试acemerk的方法,但使用method=RequestMethod.post?在粘贴的堆栈跟踪中,明确说明其@PathVariable not found错误。