【问题标题】:setting id for tr(table row ) not working为 tr(表行)设置 id 不起作用
【发布时间】:2016-05-18 03:04:49
【问题描述】:

jsp代码:

<tbody>
                    <c:forEach items="${noteList}" var="note" varStatus="count">
                        <tr id="<c:out value="${count.count}"/>">
                            <td id="noteType${count.count}">
                                Transaction Note
                            </td>
                            <td id="noteEnteredDate${count.count}">${note.formattedEnteredOn}</td>
                            <td id="noteEnteredBy${count.count}">${note.formattedUserInitials}</td>
                            <td id="noteContent${count.count}">${note.noteText}</td>
                        </tr> 
                    </c:forEach> 
                </tbody>

front end view

view source code for above screen shot

不生成 tr id 会有什么问题

【问题讨论】:

  • 这里似乎有些问题&lt;tr id="&lt;c:out value="${count.count}"/&gt;"&gt;。这一行有两个结束。

标签: jsp jsp-tags


【解决方案1】:

使用单引号而不是双引号。这将起作用:

<tbody>
    <c:forEach items="${noteList}" var="note" varStatus="count">
        <tr id="<c:out value='${count.count}'/>">
           ...
        </tr> 
    </c:forEach> 
</tbody>

已更新。这个 JSTL 代码 -

<table>
<thead></thead>
<tbody>
<c:forEach items="${noteList}" var="note" varStatus="count">
    <tr id="<c:out value='${count.count}'/>">
        <td id="noteType${count.count}">
            Transaction Note
        </td>
        <td id="noteEnteredDate${count.count}">1</td>
        <td id="noteEnteredBy${count.count}">2</td>
        <td id="noteContent${count.count}">3</td>
    </tr>
</c:forEach>
</tbody>
</table>

生成以下 HTML 标记 -

<table>
<thead></thead>
<tbody>

    <tr id="1">
        <td id="noteType1">
            Transaction Note
        </td>
        <td id="noteEnteredDate1">1</td>
        <td id="noteEnteredBy1">2</td>
        <td id="noteContent1">3</td>
    </tr>

    etc...

</tbody>

问题也可能在对象的字段中。例如,noteText 字段可能包含特殊字符。例如,结束标签 - &lt;/table&gt;

<c:set var="str" value="</table>"/>

然后我们得到这样的东西 -

fn:escapeXml() 函数转义可以解释为 XML 标记的字符。结果出现以下情况-

<td id="noteContent${count.count}">${fn:escapeXml(str)}</td> 

你会得到 -

<td id="noteContent3">&lt;/table&gt;</td>

如果你把前面的例子改成使用这个函数,你会得到你想要的:

【讨论】:

  • 我试过了,但这并没有解决我的问题。 ${note.noteText} 可能有问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-19
  • 1970-01-01
  • 2018-03-04
相关资源
最近更新 更多