我的jsp中有一个<td>
,其中有一个<spring:bind>
标记。
<td>
<spring:bind path="mailListRequest.offSeason">
<select name="<c:out value="${status.expression}" />" id="<c:out value="${status.expression}" />">
<option value="0">Select</option>
<c:forEach var="t" begin="2" step="1" end="5">
<option value="<c:out value="${t} star"/>" <c:if test="${status.value eq t}"> selected</c:if>><c:out value="${t} star"/>
</option>
</c:forEach>
<option value="boutique hotels">boutique hotels</option>
</select>
</spring:bind>
</td>
"mailListRequest.offSeason"
是服务器端的string
(Java)。这里的目标是迭代<c:forEach..>
循环变量"t"
。因此,迭代将为2,3,4,5;
,并且在<option value..>
我已经使每次迭代返回一个值前面带有字符串/ star
的值,因此输出将是{{1} }。
问题:
问题是每当我选择2 star, 3 star, 4 star...
循环中的一个选项或选项<c:forEach>
时,我的JSP中都会出现错误:
错误
"botique hotels "
。
这让我感到困惑,因为javax.servlet.jsp.JspTagException: javax.servlet.jsp.JspException: An error occurred while evaluating custom action attribute "test" with value "${status.value eq t}": An exception occured trying to convert String "2 star" to type "java.lang.Long" (null)
被设置为"mailListRequest.offSeason"
而我的选项中的值是字符串值(I PRESUME)。也许这是string
我格式错误。
答案 0 :(得分:2)
我可以收集您的选择值:
"1 star", "2 star", "3 star", "4 star", "5 star"
但是在<c:forEach>
循环内,t
的值将按顺序排列:1,2,3,4,5
因此,您的测试是将字符串"x star"
与t
进行比较,这是一个长整数,并且无法将左操作数转换为右操作数的类型。
您可能想在循环中创建一个辅助变量:
<c:set var="stringVal" value="${t} star" />
然后在测试中使用它:
<c:if test="${status.value eq stringVal}">