3

行の背景色が交互に変わるHTMLテーブルを生成するカスタムJSPタグを定義したいと思います。したがって、CSSクラス「odd」と「even」は、テーブルの行インデックスに応じて設定されます。

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>
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 に答える