2016-09-26 29 views
0

ajax调用后,我想在页面中注入一些元素(列表)。对于列表中的每个元素,我想附加t:pagelink。我使用PrototypeJs作为js框架。你有什么想法吗? 我已经测试下面的代码,但不工作(它不会令T:pagelink) 在tapestry中通过ajax添加pagelink

new Ajax.Request('my_service_url', { 
 
    onSuccess: function(response) { 
 
\t response.responseJSON.data.each(function(item){ 
 
\t \t var li = '<li>'+ 
 
\t \t '<span>'+item.title+'</span>'+ 
 
\t \t '<t:pagelink page="examples/navigation/PageLinks2">'+item.link+'</t:pagelink>'+ 
 
\t \t '</li>'; 
 
\t \t $('mylist').insert(li); 
 
\t }); 
 
    } 
 
});

+1

Javascript在客户端(在浏览器中)执行,并且挂毯模板在服务器上呈现。这将无法工作 –

回答

0

这不使用Tapestry工作,因为兰斯的Java指出,因为JavaScript代码段是在客户端执行。客户无法将标签<t:pagelink>提交给Tapestry进行解释。

你需要做的是使用Tapestry的Ajax语义,特别是Zone组件。 <t:zone>...</t:zone>定义了您的HTML文档的一部分,它将被替换为新版本,由Tapestry从.tml转换为html。

<t:zone>

所以,加<t:pagelink>的需要,可能是动态的,基于一些条件或在某些环路(即与<t:if><t:loop>标签)。然后,使用一些机制将AJAX事件发送回Tapestry。一个简单的选择是使用<t:actionlink zone="[ID of your zone]">

参见here for more info on Zones

0

感谢您的回复,但我找到了解决方案。只需使用processReply即可。事实上,答复需要修改一下。