可以使我自己的JSP标签生成的输出更短吗?例如,如下定义的标签生成5行而不是1.可以避免(没有连接所有5行到标签源中的1行)?
<%@ tag description="link" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ attribute name="href" required="true" type="java.lang.String" %> <%@ attribute name="label" required="false" type="java.lang.String" %> <a href="<c:url value="${href}"/>">${not empty label ? label : href}</a>
不是解决办法:
<%@ tag description="standard input" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ attribute name="href" required="true" type="java.lang.String" description="address relative to web-app context" %><%@ attribute name="label" required="false" type="java.lang.String" description="link label" %><a href="<c:url value="${href}"/>">${not empty label ? label : href}</a>
解决方法
是的,您可以全局配置JSP解析器来修剪脚本表达式和标记留下的空格.
将其添加到您的webapp的web.xml(它必须是Servlet 2.5兼容!):
<jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <trim-directive-whitespaces>true</trim-directive-whitespaces> </jsp-property-group> </jsp-config>
如果您定位到一个Servlet 2.4容器或更低版本,那么您必须编辑容器自己的web.xml,才能在全局应用.例如,在Tomcat中,它是/conf/web.xml文件.搜索< servlet>声明JspServlet,并在< servlet>中添加以下servlet init参数.宣言.
<init-param> <param-name>trimSpaces</param-name> <param-value>true</param-value> </init-param>