Jsp 避免JSTLC:set语句中的空白

Jsp 避免JSTLC:set语句中的空白,jsp,jstl,conditional,whitespace,el,Jsp,Jstl,Conditional,Whitespace,El,我有一个JSP文件,它生成了一个LIs列表,列表中的第一个和最后一个项目都被分配了一个特殊的类。我目前使用以下位进行此操作: <c:set var="liclass"> <c:if test="${rowStatus.first}">first</c:if> <c:if test="${rowStatus.last}"> last</c:if> </c:set> <%-- not very prett

我有一个JSP文件,它生成了一个LIs列表,列表中的第一个和最后一个项目都被分配了一个特殊的类。我目前使用以下位进行此操作:

<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>>
但我更喜欢可读的变体。另一种方法是通过移除多余空白的函数获取结果


问题:有没有一种方法或技巧可以避免在
-标记中设置这样的空白?

我会在条件运算符
的帮助下直接在
属性中设置:

<c:set var="liclass" value="${rowStatus.first ? 'first' : ''}" />
<c:set var="liclass" value="${liclass}${rowStatus.last ? ' last' : ''}" />
(仅适用于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>

修剪空间
真的

无论哪种方式,我都无法从头顶上分辨,也无法保证它会达到预期的效果,即以
第一个到最后一个
结束。你得自己试一试。

回答得很好,谢谢。我不知道EL表达式中的条件运算符(三元运算符)——我确实搜索过类似的东西,但在任何地方都找不到。JSP/JSTL文档可能更好。至于那个毫无价值的阶级——我在乎;我用Firebug查看代码,死掉的属性让我畏缩。trimDirectiveWhitespaces属性是我不知道的另一件事——这在本例和其他项目/案例中也会有很大帮助。谢谢!
<c:set var="liclass" value="${empty liclass ? 'none' : liclass}" />
<li class="${liclass}">
<%@page trimDirectiveWhitespaces="true" %>
<init-param>
    <param-name>trimSpaces</param-name>
    <param-value>true</param-value>
</init-param>