gpt4 book ai didi

java - Spring 和 Velocity - 表单处理

转载 作者:行者123 更新时间:2023-12-01 11:45:17 24 4
gpt4 key购买 nike

我用谷歌搜索了它,但找不到完全完整的答案。如果我使用 Velocity 模板作为 View ,如何处理 Spring 的表单?假设我有以下形式:

<form action="" method="POST" id="newThreadForm">
<input type="text" placeholder="Title" id="title"/>
<input type="text" placeholder="Author" id="author"/>
<input type="text" placeholder="E-mail" id="email">
<!-- other fields... -->
</form>

并有一个简单的类:

public class Post {
private int id;
private String author;
private String email;
private String title;
//other fields

//getters and setters
}

如何将用户在表单中键入的数据转换为 Controller 方法中的 Post 对象?

 @RequestMapping(value="path/to/", method=RequestMethod.POST)
public String newThread(Model model) {
//what should be there?
return "view-name";
}

我是否需要创建一个新类,例如public class NewThreadForm?将 BindingResult 参数添加到方法中?或者我该怎么办?感谢您的回答。

UPD:我写道:

@RequestMapping(value="/{board}/new", method=RequestMethod.POST)
public String newThread(Model model, @PathVariable("board") String boardName, Post post, HttpServletRequest request) {
log.info("newThread()");
Board board = new Board();
board.setName(boardName);
post.setBoard(board);
post.setDeletePassword(DigestUtils.md5DigestAsHex(post.getDeletePassword().getBytes()));
post.setIp(request.getRemoteAddr());
Thread newThread = new Thread();
newThread.setOpPost(post);
threadDao.addThread(newThread);
return "redirect:/" + boardName;
}

但是当我发送表单数据时,Spring 显示 400 错误:客户端发送的请求在语法上不正确。第一行 log.info("newThread()"); 不运行。怎么了?

UPD2:这是 html 表单中“id”属性的原因,而不是“name”属性

最佳答案

public String newThread(Post post, Model model) { ... } 应该可以。您将在方法内获得一个填充的 Post 实例,您可以对其进行验证、持久化等。

关于java - Spring 和 Velocity - 表单处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29191292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com