Java 如何缩短自定义JSP标记生成的输出?

Java 如何缩短自定义JSP标记生成的输出?,java,jsp,Java,Jsp,是否可以使我自己的JSP标记生成的输出更短?例如,定义如下的标记生成5行而不是1行。是否可以避免这种情况(无需在标记源中将所有5行合并为1行) 不是解决方案: <%@ tag description="standard input" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><%@ attribute name="href" requ

是否可以使我自己的JSP标记生成的输出更短?例如,定义如下的标记生成5行而不是1行。是否可以避免这种情况(无需在标记源中将所有5行合并为1行)


不是解决方案:

<%@ 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解析器来修剪脚本表达式和标记留下的空白

将此添加到web应用程序的
web.xml
(必须与Servlet 2.5兼容!):


*.jsp
真的
如果您的目标是Servlet2.4或更低版本的容器,那么您必须编辑容器自己的
web.xml
,以全局应用该容器。例如,在Tomcat中,它是
/conf/web.xml
文件。搜索
JspServlet
声明,并在
声明中添加以下servlet init参数


修剪空间
真的
在JSP中:

<%@ page trimDirectiveWhitespaces="true" %>

正如werkshy已经指出的,为了避免JSP自定义标记中使用的指令生成空白

<%@ tag trimDirectiveWhitespaces="true" %>

可以使用(在这种情况下没有帮助,因为它似乎只适用于JSP本身中的指令,而不适用于页面使用的自定义标记)

但是,要允许此标记属性,可能需要指定JSP版本2.1,例如使用implicit.tld(如或中所述),然后需要将其与标记一起放入目录中。(至少我需要为WebLogic 12c这样做。)

implicit.tld:

<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd">
    <tlib-version>1.0</tlib-version>
    <short-name>implicit</short-name>
</taglib>

1
含蓄的

您应该使用粗体Servlet 2.5compatible@Vlad字体哦,5年前我会的。但如今,Servlet2.5已经推出5年了。。。我希望每个人都已经在使用它;)我认为这个感叹号就足够了。
只适用于.jsp页面(与
相同),但不适用于我自己的标记生成输出。只有
trimSpaces
,因为init param可以工作并获得标记的一行输出。我使用的是Tomcat 7.0.19(Servlet 3.0,JSP 2.2),并且
可以在JSP页面上工作,但不能在标记源代码上工作(在我的示例中是
link.tag
)。在使用我自己的标记的页面上使用该指令并不会减少标记的输出。@maroosh好的,那个么也许你们应该修剪一下()你的标记的输出如何使用我问题中的标记?@marioosh抱歉,我以为你在使用自定义标记这在Tomcat 6中对我很有效:
我希望可以重新打开该问题以添加真实答案。这不是另一个问题的完全重复:如何通过自定义标记修剪空白输出而不只是删除标记中的所有空格?您不能在标记中使用。正确答案是可以将此添加到标记中:
应重新打开,因为正确答案(请参阅注释)与原始问题不同。
<?xml version="1.0" encoding="UTF-8"?>
<taglib version="2.1" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd">
    <tlib-version>1.0</tlib-version>
    <short-name>implicit</short-name>
</taglib>