簡體   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