【发布时间】:2011-08-23 15:21:52
【问题描述】:
如何将 c:forEach 标签的循环索引附加到 struts select/text 标签的属性中?
例如。
<%@ taglib uri="/WEB-INF/tld/struts-html.tld" prefix="html"%>
<c:forEach begin="2" end="${pageView.guestCount}" varStatus="gC">
<div class="section guest-details">
<html:select property='title_guest<c:out value="${gC.index}"/>'>
<html:options collection="titles" property="code" labelProperty="value" />
</html:select>
</div>
</c:forEach>
抛出以下错误
javax.servlet.jsp.JspException at org.apache.struts.taglib.html.SelectTag.calculateMatchValues(SelectTag.java:246)
现在,当我在<html:select ... 调试代码时,它显示当它设置的属性属性时,它设置为"title_guest<c:out value="${gC.index}"/>",这可能是上述异常的原因。
另外,我应该提一下,如果我使用上述格式将循环索引附加到标准 html 标记属性(如 <select> 标记),则代码可以正常工作。
例如
<c:forEach begin="2" end="${pageView.guestCount}" varStatus="gC">
<div class="section guest-details">
<select name='title_guest<c:out value="${gC.index }"/>'>
<option value="">Select Title</option>
</select>
</div>
</c:forEach>
正确输出预期的 HTML
我做错了什么,我应该使用 EL 创建将填充 html:select 标记的“属性”属性的字符串吗?
更新
下面的 sn-p 也试过了,也没用
<html:select property="title_guest${gC.index}">
而且,这也行不通
<c:set var="guestTitle">title_guest${gC.index}</c:set>
<html:select property="${guestTitle}" styleClass="{required: true}">
<html:options collection="titles" property="code" labelProperty="value" />
</html:select>
【问题讨论】:
标签: jsp struts jstl struts-html