freemarker特殊字符轉義(noparse)標簽


freemarker特殊字符轉義(noparse)標簽

自動生成mapper的時候遇到特殊字符需要轉義,特此記錄一下

如:

<#list columnList as params>
		<if test=" ${params.entryName} != null "> ${params.fieldName} = #{${params.entryName} }, </if>
</#list> 

這樣會報錯

freemarker.core.ParseException: Syntax error in template "mapperxml.ftl" in line 20, column 84:
You can't use "${" here as you are already in FreeMarker-expression-mode. Thus, instead of ${myExpression}, just write myExpression. (${...} is only needed where otherwise static text is expected, i.e, outside FreeMarker tags and ${...}-s.)
	at freemarker.core.TokenMgrError.toParseException(TokenMgrError.java:247)
	at freemarker.template.Template.<init>(Template.java:215)
	at freemarker.cache.TemplateCache.loadTemplate(TemplateCache.java:495)
	at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:409)
	at freemarker.cache.TemplateCache.getTemplate(TemplateCache.java:261)
	at freemarker.template.Configuration.getTemplate(Configuration.java:1786)
	at freemarker.template.Configuration.getTemplate(Configuration.java:1646)
	at org.sang.freemaker.fm.FreeMakerImpl.execute(FreeMakerImpl.java:66)
	at org.sang.freemaker.fm.FreeMakerImpl.executeBreakErr(FreeMakerImpl.java:125)
	at org.sang.freemaker.Client.main(Client.java:36)

應該寫成

<#list columnList as params>
		<if test=" ${params.entryName} != null "> ${params.fieldName} = <#noparse>#				{</#noparse> ${params.entryName} }, </if>
</#list> 

這樣就能正確生成了。

<#noparse>的作用:

FreeMarker 不會在這個指令體中間尋找FTL標簽, 插值和其他特殊的字符序列,除了noparse的結束標記。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM