転載: 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()、偽)。 } }
注意:以下は、データベース・リンクからの照会で、文字列の中にスプライス
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を。 } }