我有一个类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:如果
答案 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>