2011-04-01 72 views
2

我想在我的web.xml中使用trimSpaces指令修剪JSP空白,但它不起作用。这是我的web.xml:JSP trimSpaces指令不起作用!

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xmlns="http://java.sun.com/xml/ns/javaee" 
      xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd" 
      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
      id="WebApp_ID" 
      version="2.4"> 

    <display-name>MyWebApp</display-name> 

    <servlet> 
    <servlet-name>MyServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
    <servlet-name>MyServlet</servlet-name> 
    <url-pattern>/login</url-pattern> 
    </servlet-mapping> 

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

</web-app> 

我是新来的,不知道如何去调试问题。我试图把< init-param >标签放在<servlet>标签内,但这并不奏效。也许xml模式有问题吗?或者,也许我的JSP版本不正确? (几个月前我只安装了Tomcat,因此它很新)

我正在使用Tomcat 7.同样使用Spring,如您所见。

有什么建议吗?

回答

5

<init-param>JspServlet需要在servletcontainer本身,而不是你的web应用的web.xml去。转到Tomcat安装文件夹并打开/conf/web.xml文件。找到JspServlet<servlet>条目,并在那里添加<init-param>

如果你想在你的webapp的web.xml全局配置它,例如因为servletcontainer配置你的控制范围之外,那么你需要设置<jsp-config><trim-directive-whitespaces>属性。

<jsp-config> 
    <jsp-property-group> 
     <url-pattern>*.jsp</url-pattern> 
     <trim-directive-whitespaces>true</trim-directive-whitespaces> 
    </jsp-property-group> 
</jsp-config> 
-2

阅读:

Why does this PrettyTime custom tag produce 11 lines of blank text before the "pretty" date in the HTML output?(在stackoverflow.com)

这似乎是一个类似的问题。

再见

+0

因此,它看起来像init-param IS应该在servlet标签内。但就像我说的,这并没有帮助我... – 2011-04-01 22:55:48

+0

你可以检查api的类:org.springframework.web.servlet.DispatcherServlet我认为参数trimSpaces不存在..在张贴的链接servlet类是org.apache。 jasper.servlet.JspServlet(jasper是tomcat的jsp引擎) – 2011-04-01 23:00:33

0

我加入了trimSpaces指令到web.xml中我的tomcat/conf目录下发现,当我重新启动我的服务器就被忽略了。然而,出于好奇,我还添加了scratchdir指令来覆盖默认的工作目录,只是为了看看这个选项是否也被忽略了。当我添加此参数后重新启动tomcat时,拾取并应用了scratchdir和trimSpace指令。我真的不明白为什么自己添加trimSpace指令不起作用,但将其与另一个指令一起添加会导致它工作?这是一个笨重的解决方案,但至少可以工作。我使用的是tomcat 6.0.33。

<servlet> 
    <servlet-name>jsp</servlet-name> 
    <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> 
    <!-- trim white space in jsp --> 
    <init-param> 
     <param-name>trimSpaces</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>scratchdir</param-name> 
     <param-value>/temp/tomcat/work</param-value> 
    </init-param> 
    <!-- these params are here by default --> 
    <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>