gpt4 book ai didi

java - 为什么此 PrettyTime 自定义标记会在 HTML 输出中的 "pretty"日期之前生成 11 行空白文本?

转载 作者:行者123 更新时间:2023-12-01 17:38:21 24 4
gpt4 key购买 nike

<%@ tag language="java" pageEncoding="utf-8" isELIgnored="false" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<%@ tag import="com.ocpsoft.pretty.time.PrettyTime, java.util.Date"%>
<%@ attribute name="dateParam" required="true" type="java.util.Date" %>

<%
PrettyTime p = new PrettyTime();
String prettyDate = p.format(dateParam);
jspContext.setAttribute("prettyDate", prettyDate.trim());
%>
<c:out value="${prettyDate}"/>

我不知道我在这个标签中是否做错了什么。

PrettyTime 库应该只打印数据的文本版本,例如:

10 months ago

但我不明白为什么这个自定义标记会在 HTML 输出中的“漂亮”日期之前生成 11 行空白文本

最佳答案

由于 Thorbjoern 已经回答了原因,我只会回答解决方案,因为您可能会摆脱这种烦恼。

您可以将 servlet 容器配置为在处理 scriptlet 和 taglib 后修剪剩余的空格。例如,在 Apache Tomcat 中,您可以通过打开 /conf/web.xml 来完成此操作。 ,前往<servlet> JSP servlet 的定义,在 Tomcat 7 上如下所示

<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>

添加<init-param>trimSpaces=true如下<servlet> JSP servlet 的定义:

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

重新启动 Tomcat,这个空格就会消失。至少,大部分都会消失。您只需注意您自己引入的空白也将从 JSP 中物理删除。

另请参阅JSP engine HOW-TO 。几乎所有其他 servlet 容器都有类似的配置。使用关键字“trim space”查阅他们的文档。

<小时/>

至于一般方法,我建议将其转换为 Java 类,并为其创建 EL 函数。 Deathscriptlet

<c:out value="${my:prettyTime(date)}" />

关于java - 为什么此 PrettyTime 自定义标记会在 HTML 输出中的 "pretty"日期之前生成 11 行空白文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4018741/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com