簡體   English   中英

如何在play framework 2.1中保留對象

[英]how to preserve a object in play framework 2.1

我的問題是我需要保留從A控制器獲取的對象列表,該控制器在VIEW中發送對象的ID和這些對象的一些基本數據,在視圖中 ,我需要選擇一行(描述一個對象在列表中)存儲到數據庫中,然后將此ID帶到控制器B控制器B調用保存的對象列表,並從數據庫中的選定對象中獲取該對象,然后保存。

    Controller A{

     List<X> listX = math_function();
     return ok( _view.render(listX)); 

    }

    view.scala.html

    @for(listX -> X){
      <td id="@x.id"> @x.name</td>
    }

    Controller B{
...
     listX = getPreserveLists();
     x = ListX.get(get_id);
     x.save()
...
    }

我想知道如何保存這些對象。 謝謝。

您可以將它們保存到KVM(如redis )中,但是我不建議這樣做,因為您在控制器中對其進行計算,這意味着不會花費很多時間。 因此,您應該每次計算它們。

如果math_function需要大量時間,則不應在控制器中進行操作。 從http請求(例如批處理)中執行此操作,並將結果存儲在DB,KVM等中……或記憶該功能。

一種選擇是使用此處描述的play.api.cache.Cache對象。

您可以將數據存儲在緩存中:

// if listX could be different for every user, 
// you could use user.login as a key
Cache.set(user.login, listX) 

然后您可以稍后檢索listX

val maybeLisX: Option[List[X]] = Cache.getAs[List[X]](user.login)

我想補充一點,這僅在計算listX是一項昂貴的操作時才值得做。 如果listX對於相同的輸入可能不同,則您絕對不希望這樣做。 在這種情況下,您應該重新計算listX。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM