我从用户那里得到了一些输入数组,比如 years[],并在我的控制器中处理这些值。
这是我的代码:
控制器:
控制器代码尝试绑定表单数据。就我而言,从 html 表单中获取年值数组:
Form<FinStatementInput> ipForm = Form.form(FinStatementInput.class).bindFromRequest();//Array out of bound exception is thrown at this line.
if (ipForm.hasErrors()) {
return badRequest("<h1>error</h1>").as("text/html");
} else {
FinStatementInput ip = ipForm.get();
System.out.println("first year input(to test)>>"+ ip.years[0]);
return ok();
}
FinStatementInput
模型:
public int[] years;//array declaration
.
.
FinStatmentInput (int[] years) {
this.years = years; // in the constructor
}
HTML:
<form id="Start Here" name="Start Here" style="display: none;"
action="@routes.Application.calculate()" method="post">
<table class="table table-condensed">
<tr>
<td id="tdInput" >
<div class="input-group">
<span class="input-group-addon">Year 1</span> <input name="years[0]" id="GreenInput"
pattern="[0-9.]+" type="text" class="form-control" required="required">
</div></td>
<td id="tdInput" >
<div class="input-group">
<span class="input-group-addon">Year 2</span> <input name="years[1]" id="GreenInput"
pattern="[0-9.]+" type="text" class="form-control" required="required">
</div></td>
<td id="tdInput" >
<div class="input-group">
<span class="input-group-addon">Year 3</span> <input name="years[2]" id="GreenInput"
pattern="[0-9.]+" type="text" class="form-control" required="required">
</div></td>
<td id="tdInput" >
<div class="input-group">` ... like this input fields for all years needed ,say 10 years.
我得到这个运行时异常:
[InvalidPropertyException: Invalid property 'years[1]' of bean class [models.FinStatementInput]: Invalid array index in property path 'years[5]'; nested exception is java.lang.**ArrayIndexOutOfBoundsException**]
我没有在代码中的任何地方明确指定数组的大小;刚刚宣布了空的年份数组并试图从用户表单中绑定一堆年份。我想访问年份的所有数组元素,例如从 1 到 10。但我不知道导致 ArryOutOfBound Exception 的错误在哪里。任何帮助表示赞赏。