Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Scala/Lift中组织会话变量_Scala_Session State_Lift - Fatal编程技术网

在Scala/Lift中组织会话变量

在Scala/Lift中组织会话变量,scala,session-state,lift,Scala,Session State,Lift,想了解一下如何在scala/lift应用程序中最好地组织会话变量 我在网上阅读了大量scala材料,在介绍会话变量的所有示例中都发现了以下范例: 声明一个扩展SessionVar类的对象 将该对象放入包含代码段(或任何文件)的文件中 从代码库中的任何位置访问该对象(lift将根据用户http会话的生命周期来处理会话变量的生命周期) 也许我不了解一些东西,但我担心这种方法会导致在各地的各种文件中出现一大堆这样的对象。如果它是一个小应用程序,那也没什么大不了的,但当一个项目变得更大时,这可能会导致混

想了解一下如何在scala/lift应用程序中最好地组织会话变量

我在网上阅读了大量scala材料,在介绍会话变量的所有示例中都发现了以下范例:

  • 声明一个扩展SessionVar类的对象
  • 将该对象放入包含代码段(或任何文件)的文件中
  • 从代码库中的任何位置访问该对象(lift将根据用户http会话的生命周期来处理会话变量的生命周期)
  • 也许我不了解一些东西,但我担心这种方法会导致在各地的各种文件中出现一大堆这样的对象。如果它是一个小应用程序,那也没什么大不了的,但当一个项目变得更大时,这可能会导致混乱

    对于那些从事大型scala项目的人来说,是否有一种普遍接受的更好的方法?(即使它很简单,比如将所有这些对象放在一个公共文件中?)


    谢谢。

    这有点主观,但我会试试看。我认为这取决于会话var在项目中的作用域

    • 如果只在一个代码段中需要会话变量,则应将其设置为该类的私有成员
    • 如果需要在多个但不是所有的代码段中使用它,请将这些代码段放在一个包中,并使该对象成为该包的私有对象。如果你有很多,你可以创建一个额外的文件来保存它们
    • 如果您在全局范围内需要它,请将它放在一个中心位置,可能在包对象内
    • 如果可能,避免完全使用SessionVars

    在应用程序中应谨慎使用SessionVars。它们类似于Servlet会话变量,只是它们是类型安全的


    您需要多少会话变量?就个人而言,我有一个会话变量用于当前用户的主键,可能还有一个或两个以上。应用程序的其余状态应该存储在闭包中(因为与guid关联的函数在作用域内关闭)。

    …而且有一些原因不是每个人都喜欢LiftWeb:pOkay。我知道函数可以关闭在函数定义之外声明的变量,但我不清楚如何将函数与GUID关联。你能给我举个具体的例子说明如何做到这一点吗?也许我遗漏了什么。再次感谢!我也希望能提供更多的细节(文本或工作源文件的URL就足够了)。我也有类似的疑问,找不到一个好的资源(在Assembla、探索Lift book甚至邮件列表中)可以给我一些启发。提前谢谢。