2010-10-07 15 views
18

Cerco di aggiungere javascript al mio modello di velocità.modello velocità e 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> 

ma ho ottenuto il seguente errore:

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) 

Se rimuovo lo script javascript, la pagina web caricata con successo. qualcuno può spiegare perché? Penso che JavaScript non funzioni se si utilizza il modello Velocity.

risposta

21

In Velocity 1.7b1 nuova sintassi #[[this is included in output but not parsed]]# è stato introdotto:

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

Ecco una risposta meravigliosa, grazie per i tuoi aiuti –

8

Quando mescolo jquery e Velocity, trovo la cosa più semplice da fare è usare "jQuery" invece di $, per esempio

jQuery("#divid") 

Questo evita qualsiasi difficoltà: la fuga in velocità è complicata e non intuitiva.

3

Un altro modo è aggiungere javscript al proprio file e utilizzare la direttiva #include dello script vtl.

Es .:

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

contenuto di currencyDetail.js (che si trova nella confezione stessa dir/percorso di classe come .vm file):

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

Questo è stato più facile per me.

1

Se non si dispone di Velocity 1.7+ o è necessario utilizzare il codice Velocity come parte di javascript o jquery, è possibile identificare le parole chiave in javascript/jquery che causano un problema e inserirle in una variabile. Velocity renderà quindi l'output correttamente.

Prima impostare la variabile:

#set ($replaceme = "each") 

quindi utilizzarlo nel codice:

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

Ciò si traduce in javascript a lavorare sulla pagina.

1

Attualmente sto usando Apache Velocity template.How Posso includere JavaScript Velocity template.I hanno provato tutte suggerimento fornire da Stack Overflow forum.I non ha ottenuto solution.Please suggerire su questo il più presto possibile

+0

Questa dovrebbe essere una nuova domanda che mostra il codice JavaScript che stai tentando di eseguire all'interno di Velocity. Esistono diverse soluzioni alternative a seconda del problema, inclusa la sostituzione delle parole chiave, la memorizzazione del codice JavaScript nelle stringhe e l'utilizzo di [include] (https://velocity.apache.org/engine/releases/velocity-1.5/user-guide.html#include) . La console negli strumenti di sviluppo (F12) si apre quando la pagina viene caricata deve indicare dove si trova un problema. – Underverse

Problemi correlati