将javascript变量传递给velocity变量模板
我已经成功安装了将javascript变量传递给velocity变量模板,velocity,xwiki,apache-velocity,Velocity,Xwiki,Apache Velocity,我已经成功安装了xwiki,并且能够使用velocity模板语言生成wiki页面 谁能告诉我如何将javascript变量传递给velocity templete。我已经通过几个论坛,我需要把参数传递给服务器,以获得这个,但我不知道。请查找下面的文件 <script type="text/javascript"> function generateFunction() { var variable = document.getElementById('text').value;
xwiki
,并且能够使用velocity
模板语言生成wiki页面
谁能告诉我如何将javascript变量传递给velocity templete。我已经通过几个论坛,我需要把参数传递给服务器,以获得这个,但我不知道。请查找下面的文件
<script type="text/javascript">
function generateFunction()
{
var variable = document.getElementById('text').value;
}
</script>
#set($test = "variable")
$test
函数generateFunction()
{
var变量=document.getElementById('text')。值;
}
#设置($test=“variable”)
$test
这是不可能的
Apache Velocity模板是服务器端的引擎
这意味着,在服务器上,Velocity将获取模板并尝试渲染,只有在完成模板渲染后,它才会返回给客户端,客户端将以Javascript的形式执行客户端代码
Velocity alternative是freemarker,我也发现了类似的问题:
如何使用javascript中的参数调用freemarker函数
答复:
客户端web浏览器代码无法调用服务器端Freemarker函数
您必须从客户端向服务器发出ajax调用。如果您使用的是jquery,则会出现以下情况:
$.post('/send/my/var', { 'variable' : value });
如果没有jquery,请参阅
然后,在服务器端,/send/my/var URL应该到达一个模板,您可以在其中执行以下操作:
#set($test = $params.variable)
您可以在服务器端使用它做一些有用的事情,比如将它存储在会话中、数据库中等等
如果您需要将Velocity中的内容发送回Javascript,则通常必须格式化JSON代码,并向ajax调用添加异步完成回调参数:
$.post('/send/my/var', { 'variable' : value },
function(data)
{
// do something with data sent back from the server
});
也可以进行同步调用,也就是让javascript等待服务器响应,但这样做通常不是一个好主意,我在这里不作推断
最后,您还应该实现适当的错误处理。以jQuery为例,语法是:
$(document).ajaxError(function(event, jqxhr, settings, message)
{
console.log(message);
});
您使用的是velocity还是velocity.js?您好,我使用的是velocity(ApacheVelocity模板语言),非常感谢您的回复,我认为这对我帮助很大。实际上,服务器端的velocity应该是{{{{set($test=$request.value)}与XWiki一起使用