【问题标题】:How to bind input elements to an arraylist element in Spring MVC?如何将输入元素绑定到 Spring MVC 中的 arraylist 元素?
【发布时间】:2015-04-20 09:48:24
【问题描述】:

如何在 Spring MVC 中将输入元素绑定到 arraylist 元素?

视图模型:

public class AssigneesViewModel {

    private int evaluatorId;
    private int evaluatedId;
    private String evaluatorName;
    private String evalueatedName;
    //getters and setters
}

模型属性:

public class AssignEvaluationForm{
   private ArrayList<AssigneesViewModel> options;
   public ArrayList<AssigneesViewModel> getOptions() {
      return options;
   }

   public void setOptions(ArrayList<AssigneesViewModel> options) {
      this.options = options;
   }
}

控制器

@RequestMapping(value="addAssignment", method = RequestMethod.GET)
public String addAssignment(Model model){
     model.addAttribute("addAssignment", new AssignEvaluationForm());
     return "addAssignment";
}

然后在 jsp 中,我有 4 个隐藏输入,它们代表评估 ID、评估器 ID、评估器名称、评估器名称 -> 选项 [0] 的字段。 我将如何编写 jsp 代码以将这些输入与 arrayList 的元素映射?

更新:

<form:form commandName="addAssignment" modelAttribute="addAssignment" id="addAssignment" method="POST">
//..........
     <c:forEach items="${addAssignment.options}" var="option" varStatus="vs">
         <div id="assigneesOptions" >    
             <form:input path="addAssignment.options[${vs.index}].evaluatedId" value="1"></form:input>
         </div>
    </c:forEach>
 //..............
</form:form>

通过此更新,我收到以下错误:

java.lang.IllegalStateException: Neither BindingResult nor plain target object for bean name 'options[]' available as request attribute

【问题讨论】:

标签: spring jsp


【解决方案1】:
<form:input path="addAssignment.options[${vs.index}].evaluatedId" value="1"></form:input>

而不是这个addAssignment.options[${vs.index}].evaluatedId

使用这个 -> option.evaluatedId

或者您可能会使用 arraylist get -> ${addAssignment.options.get(vs.index).evaluatedId} 达到价值,尝试找出 ${} jstl 的调用大括号。顺便说一句,我不确定最后一个示例是否适用于 path="" 属性。

【讨论】:

  • 选项的数组列表在 GET 方法上为空。然后用户正在添加一些输入,并且在 POST 上我想将这些输入保存为选项 [0]。我不确定这是否很清楚。甚至有可能吗?
  • 您评论中的问题与您的主要问题无关。如果你想以数组的形式发送数据,在 name 属性中,name="options[]" 通常用于复选框和单选按钮。但是您在 jsp 中获取评估 ID 时遇到问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 2020-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多