1

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

谢谢。

4

2 回答 2

0
<script>
    var showEntityUrl = '@@{EntityGlobal.show(entity.id)}';
    window.location = showEntityUrl;
</script>
于 2013-05-22T19:00:36.307 回答
0

我发现使用 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 /}
于 2013-05-22T12:17:43.790 回答