如何在Play 2控制器上创建非动作功能?有没有办法为控制器创建实用程序功能?
public class Register extends Controller {
@BodyParser.Of(BodyParser.FormUrlEncoded.class)
public static Result registerByForm() {
.......
}
// this is utility function
private static User getFacebookIdByToken(String fbToken) {
FacebookClient facebookClient = new DefaultFacebookClient(fbToken);
User user = facebookClient.fetchObject("me", User.class);
return user;
}
}
答案 0 :(得分:3)
是的,你可以按照你展示的方式。无论如何,我认为该方法更好的地方是User
类。
答案 1 :(得分:2)
在Play 1.0中,无法区分static void foo()
非动作和动作,因此@Util
注释。我的猜测是Play 2.0可以根据返回类型区分一个方法是否是一个动作,如果你因为某种原因想要创建一个Result
返回方法,那么这只会让你陷入困境在Controller
中,不是行动。
答案 2 :(得分:-1)
在Play 1.2中,您可以将访问修饰符从公共更改为私有。 This post解释了更多详情