在tapestry中通过ajax添加pagelink

时间:2016-09-26 14:53:08

标签: ajax tapestry

在ajax调用之后,我想在页面中注入一些元素(列表)。对于列表的每个元素,我想附加t:pagelink。我使用PrototypeJs作为js框架。你知道吗? 我已经测试了下面的代码但不起作用(它不呈现t:pagelink)

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

2 个答案:

答案 0 :(得分:0)

这不适用于Tapestry,正如Lance 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

答案 1 :(得分:0)

感谢您的回复,但我找到了解决方案。只需使用processReply即可。实际上,响应需要稍作修改。