Gau*_*aui 5 java playframework
如何在Play中调用控制器方法!模板?
我有一个默认控制器,Application和该控制器内的hasliked()方法.该方法返回登录用户是否喜欢帖子ID.如果用户喜欢帖子,则返回"none",否则返回"block"(对于CSS)
我添加了以下路由:GET/hasliked/{id} Application.hasliked
我尝试了以下方法:
#{list items:postList, as:'post'}%{display = Application.hasliked(post.id); %}
<div style="display: ${display}">...</div>#{/list}
但我得到这个错误:
模板执行错误
模板/app/views/Application/dashboard.html中发生执行错误.引发的异常是NullPointerException:无法在null对象上调用方法hasliked().
尝试使用完全限定的名称,例如:
controllers.Application.hasliked()
Run Code Online (Sandbox Code Playgroud)
编辑评论:
您的例外问题是您正在访问控制器以获取值.那是错的.
Play中的控制器用于导航.它们是静态的,它们返回"void",并且它们调用另一个控制器方法或渲染方法.您尝试做的可能会产生意外结果.
你想要做的是获取控制器内的值并将其作为参数传递:
//On controller
public static void yourRequest() {
//...
Object display = getDisplay(); //get your value
render(display);
}
//On template
<div style="display: ${display}">...</div>
Run Code Online (Sandbox Code Playgroud)
这是推荐的方式.
您获得的异常(最有可能)是因为您的Application.hasLiked()以重定向调用(render()或调用另一个控制器的方法)结束,并且在您呈现与初始调用相对应的页面时发生这种情况.所以它打破了.
| 归档时间: |
|
| 查看次数: |
7577 次 |
| 最近记录: |