【发布时间】:2012-05-25 20:17:16
【问题描述】:
我想定义一个自定义 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>
dataTable.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>
【问题讨论】: