如何迭代一个类型的List并在Spring MVC中从输入框(在该列表中)中显示/获取数据

时间:2015-04-08 07:48:24

标签: java spring jsp spring-mvc

我有一个类PaymentForm,在其中我有一个类型为Issuer的变量。在Issuer内部有一个类型为Address的var addressList,它有三个vars addrId,addressLine1和payment。付款类型为付款,最后付款中有一个var,类型为int的paymentAmt。

所以我必须在jsp中迭代List(addressList)。 jsp中有两个输入框和一个标签,映射到地址的addrId和addressLine以及Payment的支付。这是列表深处的某个地方。

到目前为止我尝试了什么

1)" payForm "是在表单级别声明的commandName,计数器是在scripplet页面顶部声明的var。

<c:forEach var="pointer" varStatus="loopStatus" items="payForm.issuer.addressList">
    <DIV style="width: 100%; height: 100%; overflow: auto;">
        <tr>
            <td>
                <b><%=counter++%>)</b>
            </td>
            <td><form:input style="display:none;" path="issuer.addressList[${loopStatus.index}].addrID"/> </td>
            <td><c:out value="${pointer.addressLine}"/></td>                                                    
            <td><form:input path="issuer.addressList[${loopStatus.index}].payment.paymentAmt" size="17" maxlength="12"/></td>
        </tr>
    </DIV>
</c:forEach>

错误: -

org.apache.jasper.JasperException:javax.el.PropertyNotFoundException:class&#39; java.lang.String&#39;没有属性&#39; addressLine&#39;。

2)

<td><c:out value="${issuer.addressList[${loopStatus.index}].addressLine}"/> </td>

错误这是: -

org.apache.jasper.JasperException:/WEB-INF/pages/invoice.jsp(162,17)" $ {issuer.addressList [$ {loopStatus.index}]。addressLine}& #34;包含无效的表达式:{1}

3)

<td><c:out value="${payForm.issuer.addressList[${loopStatus.index}].addressLine}"/></td>

错误: -

org.apache.jasper.JasperException:/WEB-INF/pages/invoice.jsp(162,17)" $ {payForm.issuer.addressList [$ {loopStatus.index}]。addressLine }&#34;包含无效的表达式:{1}

第一和第三个字段没有问题。只有中间人才会在这里制造问题。

它开始使用以下代码

<td><c:out value="${payForm.issuer.addressList[0].addrID}"/></td>   

但它的编码。如何使用&#34; loopStatus &#34;获取值0,1,2,3 ....变量c:如果

2 个答案:

答案 0 :(得分:0)

使用以下代码

<td><c:out value="${payForm.issuer.addressList[loopStatus.index].addrID}"/></td>

答案 1 :(得分:0)

从你的回答中有3个解决方案

方法1:您在答案中说明了这一点。

<td><c:out value="${payForm.issuer.addressList[loopStatus.index].addrID}"/></td>

方法2:

<td><c:out value="issuer.addressList[${loopStatus.index}].addrID"/></td>

方法3:由于转义字符不可取。这将为XSS attacks打开大门。

<td>${payForm.issuer.addressList[loopStatus.index].addrID}</td>

但我仍无法找到以下方法无效的原因。因为它在我的网页中有效。

<td><c:out value="${pointer.addressLine}"/></td>

我不确定,但此代码是否为您提供输出?

<td><c:out value="${pointer.addrID}"/></td>