2012-07-09 67 views
1

我使用StringTemplate 4來生成一些Java源文件。如何擺脫StringTemplate警告「 n在字符串」

的模板是非常簡單的,例如:

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 EOLS(\ n)的分離。 當我執行代碼時,StringTemplate發出警告「QueryHandler.stg 1:25:\ n在字符串中」。

結果是正確的,但我仍然想擺脫此消息。

任何人都有這個問題,並知道如何解決它?

回答

9

t():: =「...」僅適用於單行。請使用

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

得到多行模板。 Ter

+0

固定它。謝謝。 – estiedi 2012-07-10 08:25:07