我是新手(老实说,我是mvc的)。我觉得有些事情不应该那么难。
我刚刚发现了一篇同名的帖子:呈现playframework2.0模板的一部分
但我好像没法让它工作。
我有一个包含另一个模板(行)的模板(索引),我想在单击按钮时呈现它。这是我的索引模板中的表单:
@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>
因此,当我单击按钮时,我需要传入一个新的rows元素,而不是“rowsiterator.first()”,可能我做了一些非常错误的事情,或者遗漏了一些明显的调用来解决这个问题。
谢谢你的帮助(如果很明显我错过了一些更大的概念,请随时教育我)。
通过zentasks示例,我看到这样的代码,它似乎使页面的某个部分重新加载。你知道这是怎么回事吗?
<a class="name" href="#@routes.Tasks.index(project.id)">@project.name</a>
2条答案
按热度按时间xhv8bpkk1#
很抱歉没有为您提供一个完整的解决方案,但我认为您应该先深入了解一些基本知识。
操作方法返回整个页面,而不仅仅是其中的一部分,因为它是一个完整的http响应。这意味着在该操作中调用的内容就是浏览器将呈现的内容。
getNextRows
需要一个参数来查找下一行。要仅更改页面的一部分,您需要ajax。单击按钮应该用下一组行重新呈现索引页。添加
rows
作为索引模板的参数。用这些行调用行模板。sdnqo3pr2#
将这种状态从静态场中移除的一些可能性(这肯定不会很好地工作):
将所有行返回给客户机,并让它用javascript完成其余的工作(如果数据太多,则无法正常工作)
存储会话中最新行的编号(在cookie中)
显式地处理行号,并让客户机在需要下一个行号时返回它
执行restful分页(请参阅rest集合中的分页和RESTWeb应用程序中的分页)
尝试利用分布式缓存