我用表單聲明控制器。但是,當我使用刪除網址,趕上404錯誤@RequestMapping不能抓到url
我有一個表代碼:
<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>
而且我的控制器:
@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());
}
}
通過第二URL我趕上404錯誤太多。我不明白爲什麼。 EditBook控制器:
@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);
}
}
我試圖改變它的POST,GET等之間的..幫助我嗎?請
Acemerk也是對的@PathVariable也 – CodeBender
Acemerk是不正確的。我已經試過了。它沒有幫助 –
你需要使用form post而不是href,再次嘗試acemerk的方法但是使用method = RequestMethod.POST?在你粘貼的堆棧跟蹤中清楚地聲明瞭它的@PathVariable not found錯誤。 – CodeBender