2010-10-07 27 views
18

Tôi thử thêm javascript vào mẫu vận tốc của mình.mẫu vận tốc và javascript

<html> 

<head> 
<title>:: $currency.CurrencyName Detail Info ::</title> 
</head> 

<body> 
<table> 
<tr> 
    <td>Name</td> 
    <td>$currency.CurrencyName</td> 
</tr> 
<tr> 
    <td>Jual</td> 
    <td><div id="$currency.CurrencyName_buy">$currency.Buy</div></td> 
</tr> 
<tr> 
    <td>Beli</td> 
    <td><div id="$currency.CurrencyName_sell">$currency.Sell</div></td> 
</tr> 
</table> 


<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script> 
    $(document).ready(function() { 
     setInterval(function() { 
      $.get('updateCurrency.htm', function(data) { 
       $('#time').text(data);   
      }); 
     }, 5 * 60 * 1000); // 1000 milliseconds = 1 second. 
    }); 
</script> 

<p>Current date/time is: <span id="time"></span> 
</body> 

</html> 

nhưng tôi đã nhận được lỗi sau:

org.apache.velocity.exception.ParseErrorException: Encountered "," at line 28, column 29 of currencyDetail.html 
Was expecting one of: 
    <EOF> 
    "(" ... 
    <RPAREN> ... 
    <ESCAPE_DIRECTIVE> ... 
    <SET_DIRECTIVE> ... 
    "##" ... 
    "\\\\" ... 
    "\\" ... 
    <TEXT> ... 
    "*#" ... 
    "*#" ... 
    <STRING_LITERAL> ... 
    <IF_DIRECTIVE> ... 
    <STOP_DIRECTIVE> ... 
    <INTEGER_LITERAL> ... 
    <FLOATING_POINT_LITERAL> ... 
    <WORD> ... 
    <BRACKETED_WORD> ... 
    <IDENTIFIER> ... 
    <DOT> ... 
    "{" ... 
    "}" ... 

at org.apache.velocity.Template.process(Template.java:137) 
at org.apache.velocity.runtime.resource.ResourceManagerImpl.loadResource(ResourceManagerImpl.java:415) 
at org.apache.velocity.runtime.resource.ResourceManagerImpl.getResource(ResourceManagerImpl.java:335) 
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1102) 
at org.apache.velocity.runtime.RuntimeInstance.getTemplate(RuntimeInstance.java:1077) 
at org.apache.velocity.app.VelocityEngine.getTemplate(VelocityEngine.java:528) 
at org.springframework.web.servlet.view.velocity.VelocityView.getTemplate(VelocityView.java:535) 
at org.springframework.web.servlet.view.velocity.VelocityView.getTemplate(VelocityView.java:520) 
at org.springframework.web.servlet.view.velocity.VelocityView.checkTemplate(VelocityView.java:293) 
at org.springframework.web.servlet.view.velocity.VelocityView.initApplicationContext(VelocityView.java:258) 
at org.springframework.context.support.ApplicationObjectSupport.setApplicationContext(ApplicationObjectSupport.java:73) 
at org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:70) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:323) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1355) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:314) 
at org.springframework.web.servlet.view.UrlBasedViewResolver.loadView(UrlBasedViewResolver.java:413) 
at org.springframework.web.servlet.view.AbstractCachingViewResolver.createView(AbstractCachingViewResolver.java:159) 
at org.springframework.web.servlet.view.UrlBasedViewResolver.createView(UrlBasedViewResolver.java:378) 
at org.springframework.web.servlet.view.AbstractCachingViewResolver.resolveViewName(AbstractCachingViewResolver.java:78) 
at org.springframework.web.servlet.DispatcherServlet.resolveViewName(DispatcherServlet.java:1190) 
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1139) 
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:900) 
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:808) 
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:476) 
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:431) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:119) 
at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:55) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
at java.lang.Thread.run(Unknown Source) 

Nếu tôi loại bỏ các tập lệnh javascript, các trang web được nạp thành công. bất kỳ ai có thể giải thích tại sao? Tôi nghĩ rằng javascript không hoạt động nếu sử dụng mẫu vận tốc.

Trả lời

21

Trong Velocity 1.7b1 cú pháp mới #[[this is included in output but not parsed]]# đã được giới thiệu:

#[[ 
    $(document).ready(function() { 
     ... 
    }); 
]]# 
+0

Đó là một câu trả lời tuyệt vời, Cảm ơn bạn đã giúp –

8

Khi tôi trộn jquery và Velocity, tôi tìm thấy những điều đơn giản nhất để làm là sử dụng "jQuery" thay vì $, ví dụ

jQuery("#divid") 

Điều này tránh bất kỳ khó khăn nào - thoát trong vận tốc là phức tạp và không trực quan.

3

Một cách khác là thêm javscript vào tệp riêng của nó và sử dụng lệnh #include vtl script.

ví dụ .:

<script src="http://code.jquery.com/jquery-latest.min.js"></script> 
<script> 
    #include("currencyDetail.js") 
</script> 

nội dung của currencyDetail.js (nằm trong cùng một gói dir/classpath như .vm tập tin):

$(document).ready(function() { 
    setInterval(function() { 
     $.get('updateCurrency.htm', function(data) { 
      $('#time').text(data);   
     }); 
    }, 5 * 60 * 1000); // 1000 milliseconds = 1 second. 
}); 

Đây là đơn giản nhất đối với tôi.

1

Nếu bạn không có Velocity 1.7+ hoặc cần sử dụng mã Velocity như một phần của javascript hoặc jquery, bạn có thể xác định các từ khóa trong javascript/jquery đang gây ra sự cố và đặt chúng vào một biến. Vận tốc sau đó sẽ hiển thị đầu ra chính xác.

Đầu tiên đặt biến:

#set ($replaceme = "each") 

Sau đó, sử dụng nó trong các mã:

function reverseCommentOrder(){ 
    $comments = AJS.$('#page-comments'); 
    $comments.children().$replaceme(function(i,li){$comments.prepend(li)}); 
} 

Điều này dẫn đến javascript làm việc trên trang.

1

Hiện nay tôi đang sử dụng Apache Velocity template.How Tôi có thể bao gồm JavaScript trong Velocity template.I đã thử tất cả đề nghị cung cấp bởi stack tràn forum.I đã không nhận được solution.Please đề nghị về vấn đề này càng sớm càng tốt

+0

Điều này sẽ được hỏi như một câu hỏi mới cho thấy mã JavaScript bạn đang cố gắng chạy bên trong Vận tốc. Có một số cách giải quyết tùy thuộc vào vấn đề bao gồm thay thế từ khóa, lưu trữ JavaScript theo chuỗi và sử dụng [include] (https://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html#include) . Bảng điều khiển trong công cụ dành cho nhà phát triển (F12) mở khi tải trang sẽ cho biết vấn đề là ở đâu. – Underverse

Các vấn đề liên quan