如何删除JSF输出中的空格?

是否可以配置JSF 2.0以删除XHTML标记之间不必要的空格?

不可以。小面孔无法将不必要的空白与必要的空白区分开来。 为此,它需要确定单独的HTML标记,解析CSS和JS文件以获取任何真正不必要的证据。 对于HTML


标签,CSS white-space:pre属性和JS element.style.whiteSpace='pre'代码,空白即显着。

可靠地检查它太昂贵和复杂。 如果您的实际问题是网络带宽,那么只需在服务器级别打开gzip压缩。 如何做到这一点取决于所使用的服务器,但在Tomcat上,例如它就像在/conf/server.xml元素中添加compression="on"一样简单。

但是,可以创建一个Filter来替换响应writer以修剪空白。 你可以在这里找到这种filter的例子。 它只是不考虑CSS / JS。

这个答案来自我的博客:

http://lu4242.blogspot.com/2012/12/html-white-space-compression-for-jsf.html


您可以使用MyFaces Core 2.1.10或更高版本删除这些空格,并在faces-config.xml中添加:

    .xhtml xhtml true    

而已。 现在,facelets编译器将尝试在不需要时减少或删除空格/制表符,遵循html空格压缩的规则,以避免更改页面的外观。 简单来说,这意味着必要时只用一个替换多个连续空间或者删除所有空间。 它还尽可能使用’\ n’字符,以便在压缩后更容易读取页面标记。

由于此优化是在facelets编译器中完成的,因此减少空格的工作只需执行一次,因此您的所有页面都不会产生额外的CPU或内存开销。 更重要的是,它减少了呈现页面所需的内存和CPU资源,因此这可以为您的应用程序带来一点推动。

我试图找到简单的解决方案来压缩html删除在primefaces> jsf> jsp> servlet解析后创建的空格。

我了解到,primefaces可以帮助我压缩js和css然而他们无法对HTML做什么,因为jsf到jsp在primefaces解析后发生。

JSP规范曾经有一个指令

  <%@ page trimDirectiveWhitespaces="true" %> 

做我需要的。

此外,如果需要,我们可以在web.xml中处理它。

我知道正确的方法是配置Web服务器来处理它。

但是,jBoss 7.1.1失去了对JSP配置的敏感性。 (问题始于7.0时,我们必须在每次JSP更改后重新启动服务器。它已修复并返回到7.1。假设在7.2中已修复但7.2尚未解决。)

无论如何,jBoss是很好的工具。

我的问题是,我们是否正在失去从JSP到JSF的function。

它应该是某种标记告诉JSF将trimDirectiveWhitespaces放入JSP中,它试图将自己解析为。

我不喜欢“filter”解决方案,因为它会在每次流出时修剪输出。 我宁愿将它编译成JSP> Sevlet,而不是每次都在外出时。 此外,它是定制的(不是标准,没有记录等…)。

仍然喜欢在JSF中了解“修剪空白”,“压缩html”的简单方法。