3

我想定义一个自定义 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>
4

2 回答 2

0

您是否尝试过 URI 语法?

<%@ taglib prefix="utils" uri="http://www.example.com/tld/utils"%>
于 2012-05-18T08:55:36.310 回答
0

要将页面中的变量传递到标签中,请使用属性指令。在你的标签文件中添加这个:

<%@ attribute name="rowIndex" required="true" type="java.lang.Integer" %>

而在使用此标签的 jsp 中,只需添加 rowIndex 作为标签属性。

于 2012-05-18T09:09:51.627 回答