首页 > 解决方案 > 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>

谢谢!

标签: javaspringspring-bootspring-mvcjsp

解决方案


推荐阅读