playframework 1.2.4 在 jquery 中调用操作并在视图上呈现
Posted
技术标签:
【中文标题】playframework 1.2.4 在 jquery 中调用操作并在视图上呈现【英文标题】:playframework 1.2.4 invoke action in jquery with render on a view 【发布时间】:2013-05-17 09:50:05 【问题描述】:我正在尝试在两个控制器 Entity 和 EntityGlobal 之间建立一个 html 视图。
实体控制器方法显示:
public static void show(String id)
Object entity = entityService(id);
renderTemplate("@detailEntity", entity);
EntityGlobal 控制器方法显示:
public static void show(String id)
Object entity = globalEntityService(id);
renderTemplate("@detailEntity", entity);
实际情况:
查看实体控制器的list.html:
...
<table>
#list entities, as:'entity'
<tr>
<td><a href="@Entity.show(entity.id)">entity.name</a></td>
...
</tr>
#/list
</table>
...
查看EntityGlobal控制器的list.html:
...
<table>
#list entities, as:'entity'
<tr>
<td><a href="@EntityGlobal.show(entity.id)">entity.name</a></td>
...
</tr>
#/list
</table>
...
所有代码都是重复的,除了这一行:
<a href="@EntityGlobal.show(entity.id)">
我正在尝试类似的东西:
通用模板视图 listTemplate.html :
...
<table>
#list entities, as:'entity'
<tr>
<td><a href="javascript:show('$entity.id');">entity.name</a></td>
...
</tr>
#/list
</table>
...
查看实体控制器的list.html:
#include 'listTemplate.html' /
<script>
var showEntity = #jsAction @Entity.show(':entityId') /;
function show(entityId)
$.get(showEntity(entityId: entityId), function() console.log("entity SUCCESS"););
</script>
查看EntityGlobal控制器的list.html:
#include 'listTemplate.html' /
<script>
var showEntity = #jsAction @EntityGlobal.show(':entityId') /;
function show(entityId)
$.get(showEntity(entityId: entityId), function() console.log("entity global SUCCESS"););
</script>
它不起作用。当我点击一个链接时,方法@EntityGlobal.show(':entityId') 被调用,console.log 的消息被打印,但视图'detailEntity' 上的渲染没有进行。
是否可以在 jquery 中调用动作播放并加载模板? 如果有人知道这样做的方法,那将非常有帮助。
谢谢。
【问题讨论】:
【参考方案1】:我发现使用 playframework 标签的解决方法:
标签 tag_list.html :
<table>
#list _entities, as:'entity'
% _entityShow = _entityShow.toString().replace(":entityId", entity.id); %
<tr>
<td><a href="$_entityShow">entity.name</a></td>
...
</tr>
#/list
</table>
查看实体控制器的list.html:
#tag_list entityShow:@Entity.show(':entityId'), entities: entities /
查看EntityGlobal控制器的list.html:
#tag_list entityShow:@EntityGlobal.show(':entityId'), entities: entities /
【讨论】:
【参考方案2】:<script>
var showEntityUrl = '@@EntityGlobal.show(entity.id)';
window.location = showEntityUrl;
</script>
【讨论】:
以上是关于playframework 1.2.4 在 jquery 中调用操作并在视图上呈现的主要内容,如果未能解决你的问题,请参考以下文章
playframework 1.2.4 在 jquery 中调用操作并在视图上呈现
如何将变量从 PlayFramework 1.2.4 传递到 Javascript
playframework 1.2.4 如何将 jar 与已经存在的 JPA 实体一起使用