标签: lift

提升过滤器以强制ssl

在struts应用程序中,我有一个过滤器,强制某些页面只能通过重定向访问https.我正在考虑移植它,所以我的问题是:在这种环境中,是否有一种"提升"方式来实现这样的过滤器,或者它与struts中的相似/相同?谢谢

struts scala lift

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

使用Lift在Scala中创建登录/注销表单的最佳方法

随着越来越多的人对Scala感兴趣(比如我自己),而不是一个问题,我想讨论一个基于Lift的webapp登录/注销片段的实现.

我刚开始学习Scala和Lift,所以它可能不是实现这样一个功能的最佳方式,但我想与其他初学者分享,并与更有经验的开发人员讨论.请注意,我也不是Web开发方面的专家.任何改进的帮助将不胜感激(特别是性能和安全相关的);-)

1)首先,代码片段需要很容易插入,就像默认模板中的1行代码一样.我已经使用嵌入式 Lift功能完成了它(注意下划线,因此它不能呈现为页面本身,而只是从呈现的页面调用,简而言之,某种"私有"代码段):

<lift:embed what="_logInForm" />
Run Code Online (Sandbox Code Playgroud)

2)然后,在_logInForm.html中,我使用下面的标记和条件显示来处理所有事情:

<div>
    <!-- User is not logged in, show a form to log in using the method loggedOut -->
    <lift:LogInForm.loggedOut>
        <form class="lift:LogInForm.logIn?form=post">
            <label for="textName">Username: </label><input type="text" id="textName" name="name" /> <span class="lift:Msg?id=name;errorClass=error"/><br/>
            <label for="textPassword">Password: </label><input type="password" id="textPassword" name="password" /> <span class="lift:Msg?id=password;errorClass=error"/><br/>
            <input type="submit" value="Log in" />
        </form>
    </lift:LogInForm.loggedOut>

    <!-- User is logged in, show who she is and a way to log out …
Run Code Online (Sandbox Code Playgroud)

forms scala login lift

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

一个简单的Scala Web框架?

是否有一个简单的Scala Web框架?我基本上需要基本功能,例如:

  • 路由.
  • GET/POST/PUT参数处理.
  • 一个简单的模板引擎(基于内容替换).
  • 序列化(JSON,YAML)

我不喜欢Lift,因为它对我来说太过分了,因为我想完全控制生成的HTML,这意味着我希望能够编写100%的HTML/CSS/JS代码.

有这样的框架吗?或者是否可以以不在后台生成HTML 的方式使用Lift ?或者我会更好地编写一个普通的servlet?

servlets scala lift

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

提升REST服务无法识别PUT请求

我正在使用Scala中的Lift Web框架实现REST服务,并且我在PUT请求中遇到一些问题,以创建一个我知道ID的新实体.

已经将调度添加到Boot.scala我的休息服务对象看起来有点像这样:

package code
package lib

import model._

import net.liftweb._
import common._
import http._
import rest._
import util._
import Helpers._
import json._

object RestService extends RestHelper {

  serve( "api" / "room" prefix {
    // /api/room returns all the rooms
    case Nil JsonGet _ => Room.registredRooms: JValue
    // /api/room/count gets the room count
    case "count" :: Nil JsonGet _ => JInt(Room.registredRooms.length)
    // /api/room/room_id gets the specified room (or a 404)
    case Room(room) :: Nil JsonGet _ => …
Run Code Online (Sandbox Code Playgroud)

api rest scala put lift

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

如何在IntelliJ IDEA 11 Community Edition中创建SBT运行配置?

我使用sbt-idea插件创建了一个Lift项目ifor IDEA 11社区版.它从SBT插件SBT控制台编译并运行良好,我也可以通过创建正确的"远程"配置来调试它.

但是如何创建SBT运行配置?

我不想在SBT控制台中每次输入"container:start",我想使用Run/Debug按钮启动.
我无法找到一些SBT配置类型(就像有可用的"Maven"类型),当我尝试添加基于"应用程序类型"的配置时,我无法指定主类.

没有"Scala Compilation Server"类型可用(我在可用的配置类型列表中看不到它),所以我不能使用这样的解决方案/sf/answers/429221621/
是否有任何具体的应该为"Scala编译服务器"类型显示的操作?或者仅在IDEA的完整版中可用?

更新:我也在为我的项目使用JRebel.如果没有正确的运行配置,我必须通过VM参数使用JRebel运行SBT并通过远程配置进行调试 - 因此每次更新代码时都会重新启动调试器(导致Jrebel重新加载类)而不是单击"使用Jrebel调试"按钮(感谢Jrebel IDEA插件).这很烦人,请帮帮忙!

scala lift intellij-idea sbt jrebel

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

处理容器停止/重新加载事件

有一个提升应用程序在Boot.scala中启动ssh守护程序.这是问题:当我container:restart /在sbt会话中运行时,我在使用异常中获得地址.现在有两个问题:

  1. 在Boot.scala中启动依赖服务是正确的方法吗?
  2. 无论如何如何处理容器:停止事件?

scala lift sbt xsbt-web-plugin

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

在Lift中测试一个片段

我正在创建一个简单的代码片段,它应该将Box[String]请求user-agent传递给一个helper类,该类传递应该添加到html元素的css类.我这样做是因为让Elev提供html响应与html5boilerplate中的条件注释似乎很棘手.这就是我现在所拥有的并且它有效:

class LiftBoilerplate {

   def render = "html [class+]" #> getClassForUserAgent(S.request)

   private def getClassForUserAgent(request:Box[Req]) = request match {
       case Full(r) => LiftBoilerplateHelper.getHtmlClass(r.userAgent)
       case _ => ""
   }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是我想为此编写一个单元测试:

object LiftBoilerplateSpecs extends Specification {

  val session = new LiftSession("", randomString(20), Empty)

  "LiftBoilerplate" should {
    "add 'no-js' to the class of an html tag element" in {

      val snippet = new LiftBoilerplate
      val result = snippet.render(<html><head></head><body>test</body></html>)

      result must ==/(<html class="no-js"><head></head><body>test</body></html>)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

因为这个测试失败S.requestEmpty.我该怎么做才能为代码段提供一个带有userAgent的模拟请求?

到目前为止,我已经查看了 …

testing scala lift

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

IE收到302后继续执行JS?

所以,我遇到了一个奇怪的问题,我希望有一些IE专家能够对这种行为有所了解.我的公司运行一个实时的Lift应用程序.我们使用彗星模型在浏览器和服务器之间进行实时通信,这是Lift的标准配置.另外值得注意的是:如果彗星与服务器不同步(由于连接问题或服务器重启,任何会导致服务器上的会话中断的事情)服务器响应该彗星请求,document.location.reload();并重新加载页面,启动一个新的会话,等等.

现在,为了确保注销按预期发生,我们有一个特殊的URL(/ session/logout),可以完成所有与会话相关的清理,然后将您踢回我们的主页.这可以通过单击该URL的锚点来触发,或者如果您尝试执行需要注销的操作,服务器可能会向您发出302该URL.很简单吧?在大多数浏览器中,这很有用,因为工作流看起来像这样:

  1. 用户单击注销按钮或服务器发送302到/ session/logout
  2. 当前页面上的Javascript执行停止,因此所有彗星都会关闭.
  3. 浏览器加载/会话/注销
  4. 浏览器从服务器收到302消息(表示会话清理已完成)以将用户踢到主页.
  5. 浏览器加载主页.

但是,在IE中我们看到以下行为:

  1. 用户单击注销按钮或服务器发送302到/ session/logout
  2. 浏览器开始加载/会话/注销
  3. 浏览器收到来自服务器的302消息(表示已完成会话清理)以将用户踢到主页.
  4. 浏览器开始加载主页.
  5. Comets document.location.reload();从服务器接收a ,因为它们从未被IE关闭,主页的加载被中止,并且当前页面在没有用户登录的情况下重新加载.

这是完全不合需要的,因为我们需要加载/ session/logout的正确结果 - 特别是在用户尝试执行他们登录时无法执行的操作的情况下(在这种情况下,302从注销将指向他们最初试图去的地方).

以前有没有人遇到过这种问题?关于如何处理这个问题的任何建议?

javascript internet-explorer comet lift

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

Lift中记录字段的临时验证

我正在我的电梯应用程序中开发我的用户类,并开发了两个表单,一个用于用户注册,一个用于用户登录.

我有以下用户类:

class MongoUser private () extends MongoRecord[MongoUser]
  with MongoId[MongoUser] {

    def meta = MongoUser

    object firstname extends StringField(this, "")
    object lastname extends StringField(this, "")
    object password extends PasswordField(this, "")
    object email extends EmailField(this, 90)
    object business extends StringField(this, "")

    /*
    * validation method for checking email is unique
    */
    protected def emailUnique(emailVal:String) = {
      meta.findAll("email", emailVal) match {
        case Nil => Nil
        case _ => List(FieldError(email, "Email should be unique"))
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

以下两个屏幕:

object SignupWizard extends Wizard { …
Run Code Online (Sandbox Code Playgroud)

scala lift mongodb

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

IntelliJ IDEA插件可以折叠.conf文件吗?

我有一个使用Lift框架构建的Scala应用。它有一些.conf文件。当我在IntelliJ IDEA Ultimate Fancy Pants Edition中打开这些.conf文件时,看不到任何按钮可以将那些花括号折叠在这些文件中。热键也不这样做。浏览了插件,找不到适用的插件。有什么解决方案可以在.conf文件中启用代码折叠?

更新
这是一个可爱的例子。这些“-”和“ +”图标未出现在.conf文件中: 在此处输入图片说明

plugins lift intellij-idea code-folding folding

5
推荐指数
3
解决办法
4240
查看次数