我正在尝试在两个控制器 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 中调用动作播放并加载模板?如果有人知道这样做的方法,那将非常有帮助。
谢谢。