繁体   English   中英

Play框架-如何返回play.twirl.api.Html

[英]Play Framework- How to return play.twirl.api.Html

我的应用程序的主菜单(view1)包含仅当用户登录(view2)时才必须显示的选项。 在view1中,调用了一个控制器方法。 此方法检查用户,并以用户为参数返回view2。

视图1:

@import com.feth.play.module.pa.views.html._
<div class="container-fluid">
     <ul>
        <li><a href="#">menu 1</a></li>
        <li><a href="#">menu 2</a></li>
    </ul>
</div>
<div id="logged">
    @controllers.HomeController.showOptions()
</div>

HomeController中的方法:

public Html showOptions(){
    final User localUser = getLocalUser(session());
        return view2.render(localUser);
}

视图2:

@(logged: User = null)
@if(logged!=null) {
    <div id="userMenu">
        <ul class='nav'>
            <li><a href="#">user option 1</a></li>
            <li><a href="#">user option 2</a></li>
        </ul>
</div>

编译器显示此错误:

值showOptions不是控制器的成员。ReverseHomeController

我没有很多游戏经验,因此我不确定这是调用控制器方法的正确方法。 我也尝试过

@routes.HomeController.showOptions()

但后来我明白了

无法使用将play.twirl.api.Html作为请求的处理程序返回的方法

感谢所有帮助。 谢谢 !

您需要将loggedUser传递给第一个模板,以将其传递给第二个模板:

查看1:

@(user: User)
<div class="container-fluid">
  <ul>
    <li><a href="#">menu 1</a></li>
    <li><a href="#">menu 2</a></li>
  </ul>
</div>
<div id="logged">
  @view2(user)
</div>

视图2可以保持原样。 View 1的相应控制器如下所示:

public Result showView1() {
    final User localUser = getLocalUser(session());
    return ok(view1.render(localUser));
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM