>
控制器
@Controller
public class BoardController {
@Autowired
private BoardServiceimpl boardService;
@GetMapping("/")
public String registerForm(Board board,Model model) throws Exception{
List<Board> boardlist = boardService.listboard(board);
model.addAttribute("boardlist",boardlist);
return "register";
}
@PostMapping("/register")
public String register(Board board,Model model) throws Exception{
boardService.insertboard(board);
List<Board> boardlist = boardService.listboard(board);
model.addAttribute("boardlist",boardlist);
return "register";
}
@RequestMapping(value="/writer")
public String writerForm(Board board) throws Exception{
return "writer";
}
@GetMapping("/delete")
public void deleteForm(Long boardNo, HttpServletRequest request) throws Exception{
System.out.println(boardNo);
boardService.deleteboard(boardNo);
System.out.println(boardNo);
}
}
服务
@Service
public class BoardServiceimpl {
@Autowired
private BoardRepository boardRepository;
public List listboard(Board board) throws Exception{
List<Board> boardlist = boardRepository.findAll();
return boardlist;
}
public void insertboard(Board board) throws Exception{
boardRepository.save(board);
}
@Transactional
public void deleteboard(Long boardNo) throws Exception{
boardRepository.deleteById(boardNo);
}
}
-板
@Getter
@Setter
@EqualsAndHashCode(of="boardNo")
@ToString
@Entity
@Table(name="board")
public class Board {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long boardNo;
@Column(length=300)
@NonNull
private String title;
@Column(length=300)
@NonNull
private String writer;
@Column(length=500)
@NonNull
private String content;
private LocalDateTime regDate;
}
>
<html xmlns:th = "http://www.thymeleaf.org">
<head>
<meta charset="utf-8">
<title>Board</title>
<script src = "/js/jQuery-3.6.0.min.js"></script>
<script>
$(document).ready(function(){
var objform = $("#inner");
console.log(objform);
$("#remove").on("click",function(){
objform.attr("action","/delete");
objform.submit();
});
});``
</script>
</head>
<body>
<form id = "inner" th:object="${board}" action="/delete">
<input type ="hidden" name="boardNo" th:field="*{boardNo}" />
<table align="center" border="1" width="80%">
<tr height="10" align="center" bgcolor="skyblue">
<th width="30">글번호</th>
<th width="70">작성자</th>
<th width="150">제목</th>
<th width="200">내용</th>
<th width="100">작성일</th>
<th width="50">삭제</th>
</tr>
<tr align ="center" th:each="board : ${boardlist}">
<td th:text="${board.boardNo}"></td>
<td th:text="${board.writer}"></td>
<td th:text="${board.content}"></td>
<td th:text="${board.title}"></td>
<td th:text="${board.regDate}"></td>
<td><button type="submit" id="remove">삭제</button></td>
</tr>
</table>
</form>
<a href = "writer.html" th:href="@{writer}">글쓰기</a>
</body>
</html>
原因:java。lang.IllegalArgumentException:给定的id不能为null!位于组织。springframework。util。明确肯定组织中的notNull(Assert.java:201)。springframework。数据html" target="_blank">jpa。存储库。支持简单Parepository。java上的deleteById(SimpleJpaRepository.java:166)。基本/jdk。内部的反映NativeMethodAccessorImpl。在java上调用0(本机方法)。基本/jdk。内部的反映NativeMethodAccessorImpl。在java上调用(NativeMethodAccessorImpl.java:77)。基本/jdk。内部的反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:43)。基本/java。lang.reflect。方法在org调用(方法java:568)。springframework。数据存储库。果心支持RepositoryMethodInvoker$RepositoryFragmentMethodInvoker。org上的lambda$new$0(RepositoryMethodInvoker.java:289)。springframework。数据存储库。果心支持RepositoryMethodInvoker。doInvoke(RepositoryMethodInvoker.java:137)位于org。springframework。数据存储库。果心支持RepositoryMethodInvoker。在org调用(RepositoryMethodInvoker.java:121)。springframework。数据存储库。果心支持RepositoryComposition$RepositoryFragments。在org调用(RepositoryComposition.java:529)。springframework。数据存储库。果心支持存储组合。在org调用(RepositoryComposition.java:285)。springframework。数据存储库。果心支持RepositoryFactorySupport$ImplementationMethodExecutionInterceptor。在org调用(RepositoryFactorySupport.java:639)。springframework。aop。框架ReflectiveMethodInvocation。继续(ReflectiveMethodInvocation.java:186)访问org。springframework。数据存储库。果心支持查询ExecutorMethodInterceptor。doInvoke(QueryExecutorMethodInterceptor.java:163)位于org。springframework。数据存储库。果心支持QueryExecutorMethodInterceptor。在org调用(QueryExecutorMethodInterceptor.java:138)。springframework。aop。框架ReflectiveMethodInvocation。继续(ReflectiveMethodInvocation.java:186)访问org。springframework。数据预测DefaultMethodInvokingMethodInterceptor。在org上调用(DefaultMethodInvokingMethodInterceptor.java:80)。springframework。aop。框架ReflectiveMethodInvocation。继续(ReflectiveMethodInvocation.java:186)访问org。springframework。交易拦截器。TransactionInterceptor 1美元。org上的proceedWithInvocation(TransactionInterceptor.java:123)。springframework。交易拦截器。TransactionSpectSupport。在org上调用withintransaction(transactionspectsupport.java:388)。springframework。交易拦截器。TransactionInterceptor。在组织中调用(TransactionInterceptor.java:119)。springframework。aop。框架ReflectiveMethodInvocation。继续(ReflectiveMethodInvocation.java:186)访问org。springframework。道。支持PersistenceExceptionTranslationInterceptor。调用(PersistenceExceptionTranslationInterceptor.java:137)。。。71个以上
我不知道为什么当我通过html(Form)时它不通过。
html中存在一些结构问题。您正在迭代boardList,但在删除对象期间,您没有使用boardList对象中的一个作为参数。此外,您不需要具有onClick函数。您可以通过
你应该有这种表单结构。
HTML:
<tr align ="center" th:each="board : ${boardlist}">
<td th:text="${board.boardNo}"></td>
<td th:text="${board.writer}"></td>
<td th:text="${board.content}"></td>
<td th:text="${board.title}"></td>
<td th:text="${board.regDate}"></td>
<td><a th:href="@{/delete/{boardNo}(id=${board.boardNo})}"</a></td>
</tr>
控制器:
@GetMapping("/delete/{boardNo}")
public void deleteForm(@PathVariable(value = "boardNo") Long boardNo, Model model) throws Exception{
System.out.println(boardNo);
boardService.deleteboard(boardNo);
System.out.println(boardNo);
}
您应该看看这个讨论-如何删除Thymeleaf th上的对象:每次迭代都会将一个ID传递给控制器?
我想发送用户的电子邮件检查副本 这是我的背部控制器 这是我的前控制器 这是我的观点 当我使用“console.log”检查时,前端控制器可以正确地获取用户的电子邮件。但是在后面的控制器中,RequestParam什么都没有,只有NULL没有错误代码,除了'nullPointerException'。 我想这不是沟通错误。我是不是错过了什么?谢了!
不管我怎么努力,页面都被缓存了。因此,php函数运行一次后,总是显示缓存的结果,直到您按下Shift F5 > 我禁用了奥普卡什(在 phpinfo()上不再有奥普卡切了) 我禁用了APC(phpinfo()上不再有APC) 我使用了标题 Cache-Control:no-store,no-cache,必须重新验证"); // HTTP/1.1标头(Cache-Control:post-check
我试图在我的网站上创建一个画廊,我把它们都设置为盘旋时增加大小。唯一的问题是,即使它们的尺寸增加,它们旁边的图像也会显示在增加的图像之上。 以下是HTML: 这是我的剧本: 这是我的CSS: 我试图增加和减少z指数,认为这会有所帮助。但没有这样的运气。
抱歉,如果不允许这样做。这是我第一次问问题。无论如何,我应该实现一个程序,根据文本读取等级。 “实施一个程序,根据以下内容计算理解某些文本所需的大致年级水平。文本:恭喜!今天是你的一天。你要去很棒的地方!你走了,走了!3 年级 在完成代码之后。每次我编译它时,它都会给我一个异常,即我除以零。几乎就像在我要求用户输入文本后,它根本不被读取,字母计数保持在零。我不知道如何绕过它。下面是我导入java.
我拿不到输出。。有人能帮我得到输出吗 下面给出了程序运行的示例(注意:下面的粗体文本是用户输入的输入): 输入三角形的三条边
我试图在我的网站上创建一个画廊,我把它们都设置为盘旋时增加大小。唯一的问题是,即使它们的尺寸增加,它们旁边的图像也会显示在增加的图像之上。 以下是HTML: 这是我的剧本: 这是我的CSS: 我试图增加和减少z指数,认为这会有所帮助。但没有这样的运气。 ****编辑****我解决了这个问题。把这个问题留给未来的人去看。在javascript中,我必须将div设置为更改z索引,而不是图片本身。解决方