カスタムラベルthymeleaf実装thymeleafチュートリアル-springbootプロジェクト

転載:  http://www.9191boke.com/466119140.html     91ブログネットワーク

起動します。

thymeleafを使用するプロセスでは、時々、追加をそれぞれ照会し、各ページをレンダリングすることなく、より便利にレンダリングするための自動クエリデータ用のカスタムラベルを使用して、この時間はページの公開部分をレンダリングする必要があります。サイトの下部にあるリンクのチュートリアルを始めましょう、一例として設定されています。

1.html

HTMLは次のよう:

< DIV ID = "friend_link" > 
            友情链接:
            < DIV amlink:テキスト= " ''" スタイル= "表示:インライン" > 
            </ DIV > 
        </ DIV >

我々がamlink用のカスタムラベルを定義する必要があることがわかります。

2.カスタムタグプロセッサを実装します

ThSysTagProcessor

パッケージwebapp.customlabel。

輸入com.baomidou.mybatisplus.mapper.SqlRunner。
輸入org.thymeleaf.IEngineConfiguration。
輸入org.thymeleaf.context.ITemplateContext;
輸入org.thymeleaf.engine.AttributeName。
輸入org.thymeleaf.model.IProcessableElementTag;
輸入org.thymeleaf.processor.element.AbstractAttributeTagProcessor。
輸入org.thymeleaf.processor.element.IElementTagStructureHandler。
輸入org.thymeleaf.standard.expression.IStandardExpression。
輸入org.thymeleaf.standard.expression.IStandardExpressionParser。
インポートorg.thymeleaf.standard.expression.StandardExpressions;
 インポートorg.thymeleaf.templatemode.TemplateMode; 

インポートはjava.util.List;
 インポートjava.util.Map; 

/ ** 
 *カスタムタグ
 * / 
パブリック クラス ThSysTagProcessor 拡張AbstractAttributeTagProcessor {
     プライベート 静的に 最終的な文字列TEXT_ATTRIBUTE = "テキスト" ;
     プライベート 静的 最終 int型 PRECEDENCE = 10000 ; 

    / * 
     templateMode:テンプレートモード、ここではHTMLテンプレートを使用して。
     dialectPrefix:ラベル接頭辞。それXXX:XXXのテキスト。
     がelementName:タグの要素名に一致します。たとえば、divの場合は、次に我々カスタムラベルはdivタグに使用することができます。それはヌル試合すべてのタグすることができます。
     prefixElementName:ラベル名は、接頭辞が必要です。
     attributeNameのカスタムタグの属性名。ここにテキストがあります。
     prefixAttributeName:テキスト:プレフィックス属性名は、それが真実であるならば、Thymeeleafはプレフィックステキストの属性、すなわちXXXを追加する必要があります使用するように求められます、が必要です。
     順位:優先ラベル処理、およびThymeleafの標準方言は、ここに同じ優先順位を使用していました。
     removeAttribute:ラベリング処理後のカスタムプロパティを削除するかどうか。
     * / 
    パブリックThSysTagProcessor(文字列dialectPrefix){
         スーパー
                TemplateMode.HTML、
                dialectPrefix、
                ヌルfalseに
                TEXT_ATTRIBUTE、
                trueに
                PRECEDENCE、
                真の);
    } 

    @Overrideは、
    保護された ボイドdoProcess(ITemplateContextコンテキスト、IProcessableElementTagタグ、AttributeNameにattributeNameの、
                             文字列属性値、IElementTagStructureHandler structureHandler){ 
        最終 IEngineConfiguration構成= context.getConfiguration()。
        最終 IStandardExpressionParserパーサ= StandardExpressions.getExpressionParser(コンフィギュレーション)。
        最終 IStandardExpression式= parser.parseExpression(コンテキスト、属性値)。
        最終的な文字列のタイトル= (文字列)expression.execute(コンテキスト)。

        SqlRunner sqlRunner = 新しいSqlRunner(); 
        リスト<地図<文字列、オブジェクト>> mapList = sqlRunner.selectList( "ソートによってamlink順SELECT * FROM" ); 
        StringBuilderのリンク = 新しいStringBuilderの(); 
        文字列のALINK = "<a href=\"#link#\" target=\"_blank\" title=\"#a_title#\">#タイトル#</a>に" (MAP <文字列、オブジェクト> {:mapListマップ)
            文字列alinkStr = ALINK 
                    .replaceAll( "#リンク#"、map.get( "リンク" ).toString())
                    .replaceAll( "#1 A_TITLE位"、マップ。 ( "A_TITLE"を取得)。
            ; 
            links.append(alinkStr)。
        } 

        structureHandler.setBody(タイトル + links.toString()、)。
    } 
}

注意:以下は、データベース・リンクからの照会で、文字列の中にスプライス

カスタムラベルthymeleaf springbootプロジェクトの実現| 91のブログ

 

3. 方言クラスThSysDialectの定義

 

パッケージwebapp.customlabel。

輸入org.thymeleaf.dialect.AbstractProcessorDialect;
輸入org.thymeleaf.processor.IProcessor。
輸入org.thymeleaf.standard.StandardDialect;
輸入org.thymeleaf.standard.processor.StandardXmlNsTagProcessor。
輸入org.thymeleaf.templatemode.TemplateMode。

輸入はjava.util.HashSet。
輸入java.util.Set; 

パブリック クラス ThSysDialectは拡張AbstractProcessorDialect {
     // 定义方言名称
    プライベート 静的な 最終文字列DIALECT_NAME = "SYS方言を" 

    パブリックThSysDialect(){
         // 設定カスタム方言"方言プロセッサ"は、同じ優先
        スーパー(DIALECT_NAME、 "amlink" 、StandardDialect.PROCESSOR_PRECEDENCE); 
    } 

    @Override 
    公衆セット<IProcessor> getProcessors(文字列dialectPrefix){ 
        セット <IProcessor> =プロセッサ新しい新しい HashSetの<> (); 
        processors.add(新しい新しいThSysTagProcessor(dialectPrefix)); 
        processors.add(新しい新しいStandardXmlNsTagProcessor(TemplateMode.HTML、dialectPrefix));
         戻りプロセッサ; 
    } 
}

4. SpringBootロードされたカスタム方言で

パッケージwebapp.conf。

輸入org.springframework.context.annotation.Bean。
輸入org.springframework.context.annotation.Configuration。
輸入webapp.customlabel.ThSysDialect。

/ ** 
 * Thymeleaf配置
 * / 
@Configuration 
パブリック クラスThymeleafDialectConfig { 
    @Bean 
    公共ThSysDialect thSysDialect(){
         返す 新しい)(ThSysDialectを。
    } 

}

 

おすすめ

転載: www.cnblogs.com/007sx/p/10963031.html