我正在创建一个简单的培训项目。我已经实现了一个控制器方法,它从列表中删除一个项目。该方法如下所示:
@Controller
@RequestMapping(value = "/topic")
public class TopicController {
@Autowired
private TopicService service;
...
@RequestMapping(value = "/deleteComment/{commentId}", method = RequestMethod.POST)
public String deleteComment(@PathVariable int commentId, BindingResult result, Model model){
Comment deletedComment = commentService.findCommentByID(commentId);
if (deletedComment != null) {
commentService.deleteComment(deletedComment);
}
return "refresh:";
}
}
这个方法是从按钮标签中调用的,它的外观如下:
<form><button formaction = "../deleteComment/1" formmethod = "post">delete</button></form>
在我的项目中,表单标签看起来像一个可点击的按钮。但是有一个严重的问题:控制器的方法永远不会被触发。如何使用按钮标签触发它?
PS 调用是从带有 URI http://localhost:8080/simpleblog/topic/details/2的页面执行的,控制器的 URI 是http://localhost:8080/simpleblog/topic/deleteComment/2
更新:
我创建了超链接“删除”,点击应该删除评论,我收到了一个异常
java.lang.IllegalStateException: Errors/BindingResult argument declared without preceding model attribute. Check your handler method signature!
这是真的:我的控制器方法中确实没有@ModelAttribute ,在BindingResult参数之前。但我不知道,应该是哪种类型?