gpt4 book ai didi

java - 在 Play 中调用 Controller 方法!模板

转载 作者:搜寻专家 更新时间:2023-10-31 19:30:13 26 4
gpt4 key购买 nike

如何从 Play! 中调用 Controller 方法?模板?

我有一个默认 Controller Application 和该 Controller 内的 hasliked() 方法。该方法返回登录用户是否喜欢帖子 ID。如果用户喜欢该帖子,则返回“无”,否则返回“阻止”(针对 CSS)

我添加了以下路由:GET/hasliked/{id} Application.hasliked

我尝试了以下方法:

#{list items:postList, as:'post'} %{ display = Application.hasliked(post.id); %}

<div style="display: ${display}">...</div> #{/list}

但是我得到这个错误:

Template execution error

Execution error occured in template /app/views/Application/dashboard.html. Exception raised was NullPointerException : Cannot invoke method hasliked() on null object.

最佳答案

尝试使用完全限定的名称,例如:

controllers.Application.hasliked()

编辑评论:

您的异常问题在于您正在访问 Controller 以获取值。这是错误的。

Play 中的 Controller 用于导航。它们是静态的,它们返回“void”,并且它们调用另一个 Controller 方法或渲染方法。您尝试做的事情可能会产生意想不到的结果。

你要做的是获取 Controller 内部的值并将其作为参数传递:

//On controller

public static void yourRequest() {
//...
Object display = getDisplay(); //get your value
render(display);
}

//On template
<div style="display: ${display}">...</div>

这是推荐的方式。

您得到的异常(很可能)是因为您的 Application.hasLiked() 以重定向调用(render() 或调用另一个 Controller 的方法)结束,并且在您呈现与初始对应的页面时发生这种情况称呼。所以它坏了。

关于java - 在 Play 中调用 Controller 方法!模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8181362/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com