java - Spring MVC 从 JSP 中的表单在 @Controller 中创建一个对象
问题描述
编辑; 这不是一个重复的问题,我知道以前有人问过这样的问题,但我尝试了所有这些问题,也许我不明白解决方案,但我需要帮助,所以请取消我的问题为重复,这是一个特殊的问题。
我是 Spring MVC 的新手。春天 2.1.7.RELEASE。
我正在尝试制作一个表格,用从数据库中获得的其他控制器中的数据填充它,然后获取要在另一个控制器中使用的数据。
我想从我的表单中创建一个带有参数数量(int)和接收者(int)的对象(事务),但是由于无法创建对象,Spring 返回错误。
我认为错误出现在选项标签(jsp)中。
这是我的项目结构。
Pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
事务.java
public class Transaction {
public int sender;
public int receiver;
public int quantity;
public String message;
public Wallet wallet;
public Wallet getWallet() {
return wallet;
}
public void setWallet(Wallet wallet) {
this.wallet = wallet;
}
public int getSender() {
return sender;
}
public void setSender(int sender) {
this.sender = sender;
}
public int getReceiver() {
return receiver;
}
public void setReceiver(int receiver) {
this.receiver = receiver;
}
public int getQuantity() {
return quantity;
}
public void setQuantity(int quantity) {
this.quantity = quantity;
}
public String getMessage() {
return message;
}
public void setMessage(String messsage) {
this.message = messsage;
}
}
钱包控制器.java
@Controller 公共类 WalletController {
@Autowired
private WalletService walletService;
@PostMapping("/doTransaction")
public ModelAndView doTransaction(
@Valid Transaction transaction, BindingResult bindingResult, Model model, HttpServletRequest session) {
ModelAndView mv = new ModelAndView();
//I want to get here every form parameters
}
}
JSP
<form:form method="POST" action="/doTransaction"
modelAttribute="transaction">
<input name="quantity" id="quantity" />
<form:select path="receiver">
<c:forEach items="${usersList}" var="user">
<form:option value="${user.id}">${user.name}</form:option>
</c:forEach>
</form:select>
<input type="submit" value="Do transaction" />
</form:form>
我收到此错误消息:
出现意外错误(类型=内部服务器错误,状态=500)。Bean 名称“transaction”的 BindingResult 和普通目标对象都不能用作请求属性.(BindStatus.java:153)
我在 JSP 中尝试过,但没有成功:
<form:select path="receiver">
<form:options items="${usersList}"></form:options>
</form:select>
谢谢!
解决方案
推荐阅读
- tensorflow - 如何使用冻结推理图来检测图像中的对象?
- c++ - MPI_Gather std::vector: 0 在收集的向量处输出
- authentication - 如何为 ejabberd 网站 (Debian) 注册用户
- java - 为什么每次使用 AWS KMS CMK 加密时都会得到不同的字节?
- oop - 使用派生类型在 Fortran 中定义具有多个加数的运算符(+)。可分配数组的问题
- javascript - Jquery access elements under li tag
- reactjs - 如何在 React Native 中构建可由多个组件访问的单个模态组件?
- haskell - 如何在do块中读取文件
- angular - Azure Devops Artifacts 上的自定义 Angular 主题/示意图
- c# - 无法让 Blazor WASM AAD 应用角色工作