2019-09-05 14:02:28.776警告11096 --- [nio-8080-exec-3] o.s.web.servlet.PageNotFound:没有GET的映射 / company / delete
我有一个使用Spring Boot和JSP页面的CRUD项目。
这是控制器删除方法
import logging
class RecordCounter:
_instance = None
_count = 0
def __new__(cls, *args, **kwargs):
if cls._instance is None:
cls._instance = object.__new__(cls, *args, **kwargs)
return cls._instance
def count(self):
self._count += 1
return self._count
class ContextFilter(logging.Filter):
def filter(self, record):
record.record_number = RecordCounter().count()
return True
logging.basicConfig(
level=logging.DEBUG,
format='%(record_number)s %(asctime)s %(message)s %(name)s')
logger = logging.getLogger(__name__)
logger.addFilter(ContextFilter())
有一种方法可以显示JSP页面中的所有优惠券:
@PostMapping("delete/{coupid}")
public String removeCoupon(@PathVariable int coupid) {
couponService.deleteById(coupid);
return "couponRemoved";
}
只需将每个优惠券添加到模型中,然后重定向到显示带有循环的所有优惠券的页面:
@GetMapping("/read")
public String getAllCoupons(Model theModel) {
List<Coupon> theCoupon = companyService.getCurrentCompany().getCoupons();
theModel.addAttribute("theCoupon", theCoupon);
return "showAllCoupons";
}
正如您在JSP c:forEach循环中看到的那样,我还包括了href链接:
<table class="i">
<tr>
<th>id</th>
<th>title</th>
<th>start</th>
<th>end</th>
<th>amount</th>
<th>type</th>
<th>message</th>
<th>price</th>
<th>image</th>
</tr>
<c:forEach var="tempCoupon" items="${theCoupon}" >
<tr>
<td> ${tempCoupon.coupid} </td>
<td> ${tempCoupon.title} </td>
<td> ${tempCoupon.startd} </td>
<td> ${tempCoupon.endd} </td>
<td> ${tempCoupon.amount} </td>
<td> ${tempCoupon.type} </td>
<td> ${tempCoupon.message} </td>
<td> ${tempCoupon.price} </td>
<td> ${tempCoupon.image} </td>
<td><a href="${pageContext.request.contextPath}/company/delete?coupid=${tempCoupon.coupid}"> Remove ${tempCoupon.coupid} </a></td>
</tr>
</c:forEach>
</table>
它将当前优惠券放入循环中,并将其ID放入链接中。
当我运行它并单击“删除”时,我得到了这个信息:
2019-09-05 14:02:28.776警告11096 --- [nio-8080-exec-3] o.s.web.servlet.PageNotFound:没有GET的映射 / company / delete
答案 0 :(得分:2)
在您的请求中,您将coupid
用作PathVariable
,而不是RequestParam
,因此也要像这样发送
例如:
<td><a href="${pageContext.request.contextPath}/company/delete/${tempCoupon.coupid}"> Remove ${tempCoupon.coupid} </a></td>
因此基本上可以像/company/delete/123
那样访问您的资源,而您正尝试像/company/delete?coupid=123
这样来访问它。
也,您实际上是在发送GET
请求,但您的资源是POST
,因此请将其更改为GET
,如下所示:
@GetMapping("delete/{coupid}")
public String removeCoupon(@PathVariable int coupid) {
couponService.deleteById(coupid);
return "couponRemoved";
}