2016-08-23 20 views
3

Thymleafで生成されたHTMLをどのように縮小するかを知っていますか?Thymeleafで生成されたHTMLをどのように縮小するか

私はJSPを使用した場合、私はこの依存関係でgoogleCompressorを使用することができます。

<dependency> 
    <groupId>com.googlecode.htmlcompressor</groupId> 
    <artifactId>htmlcompressor</artifactId> 
    <version>1.5.2</version> 
    <optional>true</optional> 
</dependency> 

をしかし、今I'vedはThymeleafに移動し、私は私のThymeleafページを縮小化方法がわかりません。

+0

を役に立てば幸い私はあなたがやっていることと、あなたがやろうとしているもの、それをより明確にするために、あなたの文言の一部を再構築しています。含まれるべき情報がまだある場合は、さらに質問を編集することができます。 –

答えて

1

私は残念ながらそのため、既存のlibを知らないが、あなたは、このような単純な縮小を達成するために、小さな方言を作成することができます。

まず、あなたの作成ハンドラ

import java.util.regex.Pattern; 

import org.thymeleaf.engine.AbstractTemplateHandler; 
import org.thymeleaf.model.IComment; 
import org.thymeleaf.model.IText; 
import org.thymeleaf.util.StringUtils; 

public class SimpleMinifierHandler extends AbstractTemplateHandler { 

    private static final Pattern TAB_OR_NEW_LINE = Pattern.compile("[\\t\\n]+\\s"); 

    @Override 
    public void handleComment(IComment comment) { 
    // do not print comments at all 
    } 

    @Override 
    public void handleText(IText text) { 
    // ignore white spaces, tabs and new lines 
    if (!ignorable(text)) { 
     super.handleText(text); 
    } 
    } 

    private boolean ignorable(IText text) { 
    return StringUtils.isEmptyOrWhitespace(text.getText()) || TAB_OR_NEW_LINE.matcher(text.getText()).matches(); 
    } 
} 

を作成独自の方言や、あなたのハンドラをアタッチ:

import java.util.HashSet; 
import java.util.Set; 

import org.thymeleaf.dialect.IPostProcessorDialect; 
import org.thymeleaf.engine.ITemplateHandler; 
import org.thymeleaf.postprocessor.IPostProcessor; 
import org.thymeleaf.templatemode.TemplateMode; 

public class SimpleMinifierDialect implements IPostProcessorDialect { 

    @Override 
    public String getName() { 
    return "simple-minifier"; 
    } 

    @Override 
    public int getDialectPostProcessorPrecedence() { 
    return 1000; 
    } 

    @Override 
    public Set<IPostProcessor> getPostProcessors() { 
    Set<IPostProcessor> set = new HashSet<>(1); 
    set.add(new IPostProcessor() { 
     @Override 
     public TemplateMode getTemplateMode() { 
      return TemplateMode.HTML; 
     } 

     @Override 
     public int getPrecedence() { 
      return 1000; 
     } 

     @Override 
     public Class<? extends ITemplateHandler> getHandlerClass() { 
      return SimpleMinifierHandler.class; 
     } 
    }); 
    return set; 
    } 
} 

今、あなたは簡単に既存のTemplateEngineにあなたの方言を追加することができます。

@Bean 
public TemplateEngine templateEngine() { 
    SpringTemplateEngine engine = new SpringTemplateEngine(); 
    ... 
    ... 
    ... 
    engine.addDialect(new SimpleMinifierDialect()); 
    return engine; 
} 

このDialectはCSS/JSのようなリソースを処理せず、HTML内に不要な文字を印刷します。しかし、私はDialectsを使って出力をカスタマイズする方法を示していると思います。

、 よろしく

+0

ページ出力はThymeleafキャッシュによってキャッシュされるのですか、または各要求で処理されるページはありますか? – yglodt

関連する問題