bean name';的BindingResult或普通目标对象;银行详情[0]';在Spring MVC中可用作请求属性错误

bean name';的BindingResult或普通目标对象;银行详情[0]';在Spring MVC中可用作请求属性错误,spring,spring-mvc,Spring,Spring Mvc,下面是导致错误的JSP代码片段 <form:select path="bankDetails[0].applicantType"> <form:option value="Applicant">Applicant</form:option> <form:option value="Co-Applicant 1">Co-Applicant 1</form:option> <form:option value=

下面是导致错误的JSP代码片段

<form:select path="bankDetails[0].applicantType">
    <form:option value="Applicant">Applicant</form:option>
    <form:option value="Co-Applicant 1">Co-Applicant 1</form:option>
    <form:option value="Co-Applicant 2">Co-Applicant 2</form:option>
    <form:option value="Co-Applicant 3">Co-Applicant 3</form:option>
    <form:option value="Guarantor 1">Guarantor 1</form:option>
    <form:option value="Guarantor 2">Guarantor 2</form:option>
    <form:option value="Guarantor 3">Guarantor 3</form:option>
 </form:select>

申请人
共同申请人1
共同申请人2
共同申请人3
担保人1
担保人2
担保人3
这是我的控制器代码

   @RequestMapping(value = "enterBankDetails.htm", method = RequestMethod.GET)
   public ModelAndView enterBankDetails() {
      functionName = "enterBankDetails";
      logger.info("In "+className+" - "+functionName+" ");
      BankDetails details = new BankDetails();
      ArrayList<EntityBankDetail> entitityBankDetails = new ArrayList<EntityBankDetail>();
      for(int i = 0 ; i < 4 ;i++){
            EntityBankDetail entityBankDetail = new EntityBankDetail();
            entitityBankDetails.add(entityBankDetail);
      }
      details.setBankDetails(entitityBankDetails);
      return new ModelAndView("bankDetails/bankDetails", "command",details);
   }
@RequestMapping(value=“enterBankDetails.htm”,method=RequestMethod.GET)
公共模型和查看enterBankDetails(){
functionName=“enterBankDetails”;
info(“在“+className+”-“+functionName+”)中);
BankDetails details=新的BankDetails();
ArrayList EntityBankDetails=新的ArrayList();
对于(int i=0;i<4;i++){
EntityBankDetail EntityBankDetail=新EntityBankDetail();
添加(entityBankDetail);
}
详细信息。setBankDetails(EntityBankDetails);
返回新模型和视图(“银行详情/银行详情”,“命令”,详情);
}
下面是bean代码

public class BankDetails {
    private ArrayList<EntityBankDetail> bankDetails;
    private String[] entities;
    private int noOfBankDetails;
     private String test;
      //getter and setter methods
}

public class EntityBankDetail {
    private String nameOfBank;
    private String EMIforProposedLoan;
    private String nameOfBranch;
    private String city;
    private String accountType;
    private String accountNumber;
    private String applicantType;
           //getter and setter methods  
}
公共类银行详细信息{
私人ArrayList银行详情;
私有字符串[]实体;
私人国际银行详情;
私有字符串测试;
//getter和setter方法
}
公共类EntityBankDetail{
银行的私有字符串名称;
私人预提贷款;
分支的私有字符串名称;
私人城市;
私有字符串accountType;
私有字符串accountNumber;
私有字符串应用程序类型;
//getter和setter方法
}
我得到以下错误

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'bankDetails[0]' available as request attribute
    at org.springframework.web.servlet.support.BindStatus.<init>(BindStatus.java:141)
java.lang.IllegalStateException:bean名称“bankDetails[0]”的BindingResult和普通目标对象都不能作为请求属性使用
位于org.springframework.web.servlet.support.BindStatus。(BindStatus.java:141)
请帮忙。我想不出我做错了什么

编辑:将其绑定到测试时也会发生同样的情况

<form:select path="test">
    <form:option value="Applicant">Applicant</form:option>
    <form:option value="Co-Applicant 1">Co-Applicant 1</form:option>
    <form:option value="Co-Applicant 2">Co-Applicant 2</form:option>
    <form:option value="Co-Applicant 3">Co-Applicant 3</form:option>
    <form:option value="Guarantor 1">Guarantor 1</form:option>
    <form:option value="Guarantor 2">Guarantor 2</form:option>
    <form:option value="Guarantor 3">Guarantor 3</form:option>
    </form:select> 

Neither BindingResult nor plain target object for bean name 'test' available as request attribute

申请人
共同申请人1
共同申请人2
共同申请人3
担保人1
担保人2
担保人3
bean名称“test”的BindingResult和普通目标对象都不能作为请求属性使用

首先,
bankDetails
不是数组,因此将is作为数组传递给表单bean将无法正常工作。我将为每个循环使用一个标准JSTL来循环
bankDetails数组列表
。此外,您并没有将bankDetails传递给JSP,而是传递对象
details
。还要检查bankDetails bean中是否有bankDetails的getter

<c:forEach items="details.bankDetails" var="bankDetail">
    ...
</c:forEach>

...

编辑:查看作为ModelAndView参数返回的内容。您已指定bean名称应为“command”。将其更改为字符串或名称“details”或视图JSP中使用的bean。

这是我的错误。我已经包括了

 <form:select path="test">
    <form:option value="Applicant">Applicant</form:option>
    <form:option value="Co-Applicant 1">Co-Applicant 1</form:option>
    <form:option value="Co-Applicant 2">Co-Applicant 2</form:option>
    <form:option value="Co-Applicant 3">Co-Applicant 3</form:option>
    <form:option value="Guarantor 1">Guarantor 1</form:option>
    <form:option value="Guarantor 2">Guarantor 2</form:option>
    <form:option value="Guarantor 3">Guarantor 3</form:option>
    </form:select> 

申请人
共同申请人1
共同申请人2
共同申请人3
担保人1
担保人2
担保人3

在我的
标签之外。所以现在我知道,如果我遇到这样的错误,检查jsp结构同样重要。

我不必打印出值。我必须将每个EntityBankDetail对象的属性绑定到表单;不是ArrayList。我总是可以通过这种方式访问它,我有一个工作代码来说明这一点。请检查我的编辑也。