1

StringTemplate 4 を使用して Java ソース ファイルを生成しています。

テンプレートは非常にシンプルです。たとえば、次のとおりです。

QueryHandler(method) ::="
public class Obtenir<method.name>Handler extends QueryHandler\<List\<<method.name>Db>> implements IQueryHandler\<List\<<method.name>>>{
    private IQuery\<List\<<method.name>Db>> query;
    private <method.name>Converter converter;

    @Inject
    public Obtenir<method.name>Handler(IQuery\<List\<<method.name>Db>> query, <method.name>Converter converter, IStatisticsCollecter theStatsCollecter){
        super(theStatsCollecter);
        if(query == null){
            throw new IllegalArgumentException(\"The query argument cannot be null\");
        }
        if(converter == null){
            throw new IllegalArgumentException(\"Illegal argument for converter(null)\");
        }
        this.query = query;
        this.converter = converter;
    }

    public List\<<method.name>> handle(Object... params) throws JdbcException {
        final String method = \"obtenir<method.name>\";
        DaoQueryStatusCallable status = new DaoQueryStatusCallable();
        List\<<method.name>Db> result = invoke(query, status, method);
        return converter.convert(result);
    }

 }
"

コードはさらに単純です。

STGroup group = new STGroupFile("src/main/resources/QueryHandler.stg");
ST wsTemplate = group.getInstanceOf("QueryHandler");
wsTemplate.add("method", m);
System.out.println(wsTemplate.render());

テンプレート行は Unix EOL (\n) で区切られています。コードを実行すると、StringTemplate から「QueryHandler.stg 1:25: \n in string」という警告が表示されます。

結果は正しいですが、このメッセージを取り除きたいです。

誰もこの問題を抱えていて、それを解決する方法を知っていますか?

4

1 に答える 1

10

t() ::= "..." は、単一行のみを意味します。使ってください

t() ::= <<
...
>>

複数行のテンプレートを取得します。テル

于 2012-07-09T15:25:42.300 に答える