我想定义一个自定义 JSP 标记,它生成一个具有交替行背景颜色的 HTML 表。因此,CSS 类“奇数”和“偶数”是根据表的行索引设置的。
没有 JSP 标记的示例可以正常工作,问题是:下面的自定义标记示例中出了什么问题?如何通过两个自定义标签传递变量“rowIndex”?
参考http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPTags5.html没有帮助。
谢谢
有效的示例 JSP 页面:
<c:set var="rowIndex" value="1"/>
<table class="datatable">
<tbody>
<tr class="${(rowIndex %2 == 0) ? 'odd' : 'even'}"><c:set var="rowIndex" value="${rowIndex+1}"/>
<td width="200px"><bean:message key='myKey' /></td>
<td>todoValue</td>
</tr>
<tr class=${(rowIndex %2 == 0) ? 'odd' : 'even'}><c:set var="rowIndex" value="${rowIndex+1}"/>
<td><bean:message key='myKey' /></td>
<td>todoValue</td>
</tr>
</tbody>
</table>
具有不起作用的自定义标记的示例 JSP 页面:
JSP 页面
<%@taglib tagdir="/WEB-INF/tags" prefix="myApp"%>
....
<myApp:keyValueDataTable>
<myApp:keyValueDataTableRow />
<myApp:keyValueDataTableRow />
<myApp:keyValueDataTableRow />
</myApp:keyValueDataTable>
数据表.tag
<%@ include file='/tiles/taglibs.inc'%>
<%@tag description="Description" pageEncoding="UTF-8"%>
<%@ variable name-given="rowIndex" %>
<c:set var="rowIndex" value="1" />
<table class="datatable">
<tbody>
<jsp:doBody/>
</tbody>
</table>
tableRow.tag
<%@ include file='/tiles/taglibs.inc'%>
<%@tag description="Description" pageEncoding="UTF-8"%>
<%@ variable name-given="rowIndex" %>
<tr class="${(rowIndex %2 == 0) ? 'odd' : 'even'}">
<c:set var="rowIndex" value="${rowIndex+1}" />
<td width="200px"><c:out value="Index=${rowIndex}"></c:out> <bean:message key='myKey' /></td>
<td>todoValue</td>
</tr>