2017-02-06 12 views
2

Thymeleafテンプレートを使用してHTMLページを生成するサービスに取り組んでいます。これらのテンプレートの1つでは、HTML属性をJSON文字列として使用したいと考えています。私の文脈における関連するオブジェクトはArrayList<String>です。何もせずに出力は"[item1, item2]"ですが、私は"["random","stuff"]"がほしいと思います。ThymeleafとSpringブートコンバーターを使用したJSON文字列へのリスト

私はConverterFormatterについて読んだことがありました。しかし私は私の変換システムを動作させることができません。ここで

は私のカスタムConverterです:

public class ListConverter implements Converter(ArrayList<String>, String { 
    public String convert (ArrayList<String> source) { 
    return new JSONArray(source).toString(); 
    } 
} 

メインクラスが

@SpringBootApplication 
public class TheApplication extends WebMvcConfigurerAdapter { 

    public static void main(String[] args) { 
    SpringApplication.run(PageServiceApplication.class, args); 
    } 

    @Bean 
    public ListConverter listConverter() { 
    return new ListConverter(); 
    } 

    @Override 
    public void addFormatters(FormatterRegistry registry) { 
    registry.addConverter(listConverter()); 
    } 
} 

のように見える最後Thymeleafのテンプレートが

<some-webcomponent xmlns:th="http://www.thymeleaf.org" 
    th:attrappend="tags=${data.tags} ..."> 
</some-webcomponent> 

のように見えるのでtagsは私ArrayList<String>です。私はまた${{data.tags}}または${#conversions.convert(data.tags, 'String'}で変換を強制しようとしましたが、唯一これは"[item1, item2]"から"item1,item2"になります。

Doing​​が働いていますが、それ以外の場所ではおそらくArrayList<String>だけではありません。

は、だから私の質問は以下のとおりです。

  • がすべてで、この可能ですか?
  • Converterですか?
  • 設定には何が欠けていますか?

ありがとうございます。

答えて

1

何らかの理由で、ArrayListの代わりにListを使用して動作します。また、私はaddFormattersメソッドを取り除くでしょう。 Bean宣言だけが必要です。

春ブーツ:

@SpringBootApplication 
public class TheApplication extends WebMvcConfigurerAdapter { 

    public static void main(String[] args) { 
    SpringApplication.run(PageServiceApplication.class, args); 
    } 

    @Bean 
    public Converter<List<String>, String> converter() { 
    return new Converter<List<String>, String>() { 
     public String convert(List<String> source) { 
     return new JSONArray(source).toString(); 
     } 
    }; 
    } 
} 

Thymeleaf(タグのダブルブラケット)

<some-webcomponent xmlns:th="http://www.thymeleaf.org" 
    th:attrappend="tags=${{data.tags}} ..."> 
</some-webcomponent> 
+0

は、あなたの答えをありがとう:) – kalnic29

関連する問題