【发布时间】:2012-08-20 05:48:07
【问题描述】:
我是 Play 新手(老实说,我也是 MVC 新手)。而且我遇到了一些看起来不应该那么难的问题。
我刚刚发现了这个同名帖子:Rendering a portion of a Play framework 2.0 template
但我似乎无法正常工作。
我有一个模板(索引),其中包含另一个模板(行),我想在单击按钮时呈现该模板(索引)。 这是我的索引模板中的表格:
@form(routes.Application.getNextRows()) {<input type="submit" value="Next Rows!">}
这是getNextRows:
public static Result getNextRows() {
return ok(views.html.tags.rows.render(rowsIterator.next()));
}
这就是我认为我遇到问题的地方,但我不知道我应该如何进行那个调用,或者我应该返回什么(没有得到一些 NullPointerException)。
这是需要重新渲染的位(在索引中):
<table cellspacing="0" style="table-layout:fixed" border="2">
<col width="50%">
<col width="45%">
<col width="5%">
@tags.rows(rowsIterator.first())
</table>
所以当我点击按钮时,我需要传入一个新的行元素,而不是“rowsIterator.first()” 大概我做错了什么,或者错过了一些明显的电话来解决这个问题。
感谢您的帮助(如果我明显遗漏了一些更大的概念,请随时教育我)。
查看 Zentasks 示例,我看到这样的代码,它似乎使页面的一部分重新加载。知道这是如何工作的吗?
<a class="name" href="#@routes.Tasks.index(project.id)">@project.name</a>
【问题讨论】:
-
这是什么意思:单击按钮时我要呈现的另一个模板(行)?
-
抱歉,我有 2 个模板,一个称为索引,一个称为行。行在索引内渲染,我希望更新此渲染
-
您有两种方法可以做到这一点:常见 - 只需使用新的 行 集重新加载整个页面,或使用 AJAX 仅添加新项目而不重新加载
-
谢谢,我认为我倾向于第一个解决方案。我只需要 ajax 来完全替换我的所有行,所以认为这可能很容易(ish)。
标签: java scala playframework playframework-2.0