标签: lift

如何在Actors中安全地使用ThreadLocal缓存?

我的应用程序最终通过Actors进行大量后台处理,特别是加载Mapper实例,然后对它们进行一些工作.这是非常重复的,我想在我的Actor代码中缓存一些这些查找.

我通常会使用ThreadLocal.但是,由于线程初始化是由Actor线程池处理的,所以它似乎是唯一一个初始化并随后清除ThreadLocal的地方是在actor的PartialFunction中接收传入的消息.

我现在正在做的是在我的Actor中创建另一个方法,如下所示:

override def aroundUpdates[T](fn: => T) : T = {
  clientCache.init {
    fn
  }
}
Run Code Online (Sandbox Code Playgroud)

init方法处理以清除ThreadLocal的finally块.我不喜欢这种方法,因为aroundUpdates只存在于设置缓存的目的,它闻起来像代码味道.

有一个更好的方法吗?

scala lift

1
推荐指数
1
解决办法
462
查看次数

liftweb有迭代标签吗?

我想知道,Lift是否有一个迭代标记(例如:for,foreach)?当我使用JSP时,我可以轻松地使用JSP迭代List,将对象传递给标记.像这样的东西,或者像这样.我知道这不是最好的例子,但你明白我的意图.总而言之,这与Lift存在,或者如果不存在,我将如何设法做这样的事情?

我想做的最后一件事是硬编码html.

iteration scala jsp-tags lift

1
推荐指数
1
解决办法
303
查看次数

如何在Lift中的URL中找到#fragment

我对Lift非常陌生,而我一直试图找到的一件事就是如何在一个片段的上下文中找到当前页面URL中的"#".因此,如果用户访问,http://www.example.com/some/path/page#stuff那么我想从中提取"东西".我一直在谷歌搜索和搜索API文档,还没有找到任何东西.

scala lift

1
推荐指数
1
解决办法
314
查看次数

将Vaadin与Scala一起使用 - 使用像Play这样的框架是否有意义!还是举起?

我想创建Web应用程序,同时学习一些很酷的新框架/技术.起初我在看Spring-Roo和Vaadin,但后来我认为使用纯java以外的东西会更有趣(也可能更有效).

到目前为止,我决定使用scala.但是必须说我真的很喜欢Vaadin的gui,如果可能的话我想用它.可能我可以使用纯vaadin + scala来构建一些简单的Web应用程序,但如果它有意义,那么我宁愿使用一些现有的框架来帮助我安全,强制执行适当的mvc或mvp等等.

使用Play是否有意义!还是以Vaadin为前端?或者别的什么?是否有任何教程或文档(我没有找到任何东西)?

或者也许我会更好地使用标准的Spring(Spring-Roo)和java?

spring scala lift vaadin playframework

1
推荐指数
1
解决办法
1138
查看次数

提升初学者:如何使用具有Java空值的Box

我是一个Lift初学者,经常编写这样的代码:我使用Java方法返回一个对象或者null找不到值.所以我需要检查空值:

val value = javaobject.findThing(xyz)
if(value != null) {
    value.doAnotherThing()
} else {
    warn("Value not found.")
}
Run Code Online (Sandbox Code Playgroud)

我可以使用Box概念更短地编写此代码吗?我已经阅读了有关Box概念Lift-Wiki文档,但我不明白如何将它与Java null值一起使用.

scala lift option

1
推荐指数
1
解决办法
564
查看次数

为什么使用单例实现Lift中的SessionVars?

在Lift管理状态的一种典型方法是创建一个扩展SessionVar的单例对象,就像这个例子中的文档一样:

object MySnippetCompanion {
  object mySessionVar extends SessionVar[String]("hello")
}
Run Code Online (Sandbox Code Playgroud)

使用SessionVars 的情况很清楚,我已经根据需要在实践中使用它们.我也大致了解它们是如何在里面工作的.

尽管如此,我还是不禁想知道为什么"会话变量"的机制与当前会话明显相关(通常只是系统中许多会话中的一个),设计为通过单例使用?这与我的直觉object相反,乍看之下我很想相信Lift能够以某种方式覆盖Scala的语言特征,并在常规Scala中创造出与众不同的东西.

即使我现在明白它是如何运作的,我也无法理解这种设计的理由,至少在我看来,这种设计打破了最不惊讶的规则.有人可以指出任何优势,或者解释为什么可以做出这样的设计决定?

scala session-variables lift

1
推荐指数
1
解决办法
129
查看次数

对象初始化时出现NullPointerException

我正在使用Scala Liftweb并拥有此模型对象:

object Product extends Product with LongKeyedMetaMapper[Product] {
  override def dbTableName = "products"

  override def dbIndexes = UniqueIndex(slug) :: super.dbIndexes

  def menus = sitemap

  lazy val sitemap: List[Menu] = List(editProductMenuLoc, listProductsMenuLoc, createProductMenuLoc, indexProductsMenuLoc).flatten(a => a)

  protected def editProductMenuLoc =
    Full(Menu(Loc("EditProduct" + menuNameSuffix, editPath, S.?("edit.product"))))

  protected def listProductsMenuLoc = Full(Menu(Loc("ListProduct" + menuNameSuffix, listPath, S.?("list.products"))))

  protected def indexProductsMenuLoc = Full(Menu(Loc("ListProduct" + menuNameSuffix, indexPath, S.?("index.products"))))

  protected def createProductMenuLoc =
    Full(Menu(Loc("CreateProduct" + menuNameSuffix, createPath, S.?("create.product"))))

  protected val menuNameSuffix = ""

  protected val editSuffix …
Run Code Online (Sandbox Code Playgroud)

scala lift

1
推荐指数
1
解决办法
2232
查看次数

如何连接电梯和MySQL?

我想创建一个简单的提升Web应用程序,它通过表单读取输入并将其插入数据库.

mysql scala lift

0
推荐指数
1
解决办法
1629
查看次数

哪种技术堆栈可用于通过网络和移动设备进行汽车共享

我想开始一个项目,我想为在我办公室工作的人们建立一个内部网网站和移动应用程序进行汽车共享.基本的想法是,如果有人有兴趣寻找拼车的人,应该在时间X发布从A到B的帖子.然后人们可以回复它.

我已经缩小了我对Scala + Lift + MongoDB或Node.JS + Redis/MongoDB + HTML5的选择范围.对于我提到的问题,我不知道哪一个更好或更差.同时考虑为同一个应用程序开发移动应用程序,人们可以通过手机发送拼车请求.寻找可以补充移动开发的堆栈.

我知道有各种各样的解决方案,但我希望学习一些新的和令人兴奋的东西,并在开发过程中获得乐趣.

scala lift mongodb redis node.js

0
推荐指数
1
解决办法
440
查看次数

JsCmd如何在Lift工作?

我认为它将附带的代码编译成Javascript,但代码是如何编译而不是执行的?例如,Simply Lift的代码:

object AjaxExample {
  def render = {
    // state
    var name = ""
    var age = "0"
    val whence = S.referer openOr "/"
?
    // our process method returns a
    // JsCmd which will be sent back to the browser
    // as part of the response
    def process(): JsCmd= {
?
      // sleep for 400 millis to allow the user to
      // see the spinning icon
      Thread.sleep(400)

      // do the matching
      asInt(age) match {
        // display …
Run Code Online (Sandbox Code Playgroud)

scala lift

0
推荐指数
1
解决办法
1275
查看次数