当前位置 : 主页 > 编程语言 > java >

jsp – 在JSTL c:set语句中避免使用空格

来源:互联网 收集:自由互联 发布时间:2021-06-25
我有一个生成LI列表的JSP文件,其中列表中的第一个和最后一个项目分配给它们的特殊类.我目前使用以下位: c:set var="liclass" c:if test="${rowStatus.first}"first/c:if c:if test="${rowStatus.last}" last/c
我有一个生成LI列表的JSP文件,其中列表中的第一个和最后一个项目分配给它们的特殊类.我目前使用以下位:

<c:set var="liclass">
    <c:if test="${rowStatus.first}">first</c:if>
    <c:if test="${rowStatus.last}"> last</c:if>
</c:set>

<%-- not very pretty --%>
<li<c:if test="${not empty liclass}"> class="${liclass}"</c:if>>

在这种情况下的问题是,在只有一个结果的情况下,该类应该变为“第一个最后”(它起作用),但它最后变为[…],其中[…]表示一堆SO过滤掉的空白.

似乎< c:set>也使用由缩进引起的空白.我可以通过键入它而不用空格来解决它:

<c:set var="liclass"><c:if test="${rowStatus.first}">first</c:if><c:if test="${rowStatus.last}"> last</c:if></c:set>

但我更喜欢可读的变体.另一种方法是通过一个删除多余空格的函数来拉取结果.

问题:是否有一种方法或技术可以避免在< c:set> -tag中设置这样的空格?

我在条件运​​算符的帮助下直接在value属性中做到了吗?:.

<c:set var="liclass" value="${rowStatus.first ? 'first' : ''}" />
<c:set var="liclass" value="${liclass}${rowStatus.last ? ' last' : ''}" />

对于不漂亮的< li>部分,我只是补充一下

<c:set var="liclass" value="${empty liclass ? 'none' : liclass}" />

并做

<li class="${liclass}">

没错,它为非第一个/最后一个元素添加了一个看似毫无价值的类=“无”,但谁在乎呢?

至于具体问题,你可以通过将@page的trimDirectiveWhitespaces属性设置为true来修剪taglibs留下的空白.

<%@page trimDirectiveWhitespaces="true" %>

(仅适用于Servlet 2.5 / JSP 2.1容器)

您也可以在servletcontainer级别配置它.由于不清楚您正在使用哪一个,这里只是一个Apache Tomcat示例:在Tomcat / conf / web.xml中的JSP servlet条目中添加/编辑以下初始化参数:

<init-param>
    <param-name>trimSpaces</param-name>
    <param-value>true</param-value>
</init-param>

无论哪种方式,我都无法从头顶分辨出来,也不能保证它能达到预期的效果.你必须自己尝试一下.

网友评论