【问题标题】:Add pagelink via ajax in tapestry在挂毯中通过ajax添加页面链接
【发布时间】:2016-09-26 14:53:08
【问题描述】:

在 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);
	});
  }
});

【问题讨论】:

  • Javascript 在客户端(在浏览器中)执行,挂毯模板在服务器上呈现。这永远行不通

标签: ajax tapestry


【解决方案1】:

感谢您的回复,但我已经找到了解决方案。只需使用 processReply 就可以了。确实,响应需要稍作修改。

【讨论】:

    【解决方案2】:

    正如 Lance Java 所指出的,这不适用于 Tapestry,因为 Javascript sn-p 是在客户端上执行的。客户端无法将&lt;t:pagelink&gt; 标签提交给Tapestry 进行解释。

    您需要做的是使用 Tapestry 的 Ajax 语义,尤其是 Zone 组件。 &lt;t:zone&gt;...&lt;/t:zone&gt; 定义了 HTML 文档的一部分,它将被替换为新版本,由 Tapestry 从 .tml 呈现为 html。

    因此,在您的&lt;t:zone&gt; 中,根据需要添加&lt;t:pagelink&gt;,可能是动态的,基于某些条件或在某些循环中(即使用&lt;t:if&gt;&lt;t:loop&gt; 标签)。然后,使用某种机制将 AJAX 事件发送回 Tapestry。一种简单的选择是使用&lt;t:actionlink zone="[ID of your zone]"&gt;

    here for more info on Zones

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-25
      • 2019-12-13
      • 1970-01-01
      • 2016-04-16
      相关资源
      最近更新 更多