[英]Java: Apache Velocity Parser Error on Curly Brace
我正在使用Apache Velocity,並且我的模板之一正在觸發解析器錯誤。 導致異常的行是:
$slider.animate({height: configMap.extendedHeight})
.attr('title', configMap.extendedTitle);
錯誤是
Oct 28, 2013 11:34:50 AM org.apache.velocity.runtime.log.CommonsLogLogChute log
SEVERE: ResourceManager.getResource() parse exception
org.apache.velocity.exception.ParseErrorException: Encountered ")\n .attr(\'title\', congifMap.extendedTitle);\n return true;\n } else if(sliderHeight === configMap.extendedHeight) {\n " at vml/Slider.vml[line 45, column 71]
Was expecting one of:
"," ...
")" ...
<WHITESPACE> ...
at org.apache.velocity.Template.process(Template.java:151)
at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:437)
at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:352)
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1533)
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1514)
at org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:373)
...
我是VTL語法的新手,在VTL參考手冊中看不到可能由什么引起的錯誤
http://velocity.apache.org/engine/devel/vtl-reference-guide.html
有誰知道這是什么原因以及如何解決? 先感謝您!
因此,顯然從Velocity 1.7開始,您可以使用#[[ ]]#
指令從渲染中排除塊。 在這種情況下,一種解決方案是
#[[
<script type="text/javascript">
var Slider = (function () {
var configMap = {
extendedHeight: 434,
extendedTitle: 'Click to retract',
retractedHeight: 16,
retractedTitle: 'Click to expand',
templateHtml: '<div class="slider"></div>'
}, $slider, toggleSlider, onClickSlider, initModule;
toggleSlider = function () {
var sliderHeight = $slider.height();
if(sliderHeight === configMap.retractedHeight) {
$slider.animate({height: configMap.extendedHeight})
.attr('title', configMap.extendedTitle);
return true;
} else if(sliderHeight === configMap.extendedHeight) {
$slider.animate({height: configMap.retractedHeight})
.attr('title', configMap.retractedTitle);
return true;
}
return false;
};
onClickSlider = function (event) {
toggleSlider();
return false;
};
initModule = function ($container) {
$container.html(configMap.templateHtml);
$slider = $container.find('.slider');
$slider.attr('title', configMap.retractedTitle)
.click(onClickSlider);
return true;
};
return {initModule: initModule};
})(jQuery);
jQuery(document).ready(
function () {
Slider.initModule(jQuery('#slider'));
}
);
</script>
]]#
但是,這仍然不能回答問題的第一部分,即第一錯誤實際上是什么。
如果$ slider是一個JavaScript變量,它將與Velocity變量(也以$:開頭)發生沖突,這可能解釋了解析錯誤異常。
換句話說:Velocity解析此模板以嘗試從引擎獲取$ slider值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.