小编ebr*_*hez的帖子

Acegi/Spring安全性是否支持getUserPrincipal()?

我需要使用Acegi/Spring安全性连接现有应用程序.

为了开始,我正在寻找一个简单的信息:在这个上下文中,从我的应用程序调用的HttpServletRequest.getUserPrincipal()是否正确返回通过Spring获得的用户名(而不是使用特定于Spring的对象)?我用Google搜索了相互矛盾的信息.

我假设如果使用过滤器实现Acegi,它可以重载Servlet API的getUserPrincipal(),对吗?

附属问题:如果默认不是这种情况,有没有办法打开它?

谢谢,

-Erik

java security spring servlets spring-security

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

Scala集合类型之间的隐式转换

我想在Scala XML Elem对象和XML元素的另一种表示之间隐式转换,在我的例子中是dom4j Element.我写了以下隐式转换:

implicit def elemToElement(e: Elem): Element = ... do conversion here ...
implicit def elementToElem(e: Element): Elem = ... do conversion here ...
Run Code Online (Sandbox Code Playgroud)

到目前为止,这很好,这是有效的.

现在我还需要所有元素的集合来转换两种方式.首先,我是否绝对需要编写其他转换方法?如果我没有,事情似乎没有用.

我试着写下面的内容:

implicit def elemTToElementT(t: Traversable[Elem]) = t map (elemToElement(_))
implicit def elementTToElemT(t: Traversable[Element]) = t map (elementToElem(_))
Run Code Online (Sandbox Code Playgroud)

这看起来并不太理想,因为如果转换方法采用Traversable,那么它也会返回Traversable.如果我传递一个List,我也会得到一个Traversable.所以我假设转换应该以某种方式进行参数化.

那么,为了尽可能通用,编写这些转换的标准方法是什么?

xml scala dom4j

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

为什么在理解中这两种模式匹配之间的行为存在差异?

考虑一下Map[String, Any]:

val m1 = Map(("k1" -> "v1"), ("k2" -> 10))
Run Code Online (Sandbox Code Playgroud)

现在让我们写一个for:

scala> for ((a, b) <- m1) println(a + b)
k1v1
k210
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.

现在让我们指定第二个成员的类型:

scala> for ((a, b: String) <- m1) println(a + b)
k1v1

scala> for ((a, b: Integer) <- m1) println(a + b)
k210
Run Code Online (Sandbox Code Playgroud)

在这里,当我指定一个类型时,会发生过滤,这很好.

现在说我想使用数组[Any]代替:

val l1 = Array("a", 2)
Run Code Online (Sandbox Code Playgroud)

事情破裂了:

scala> for (v: String <- l1) println(v)
<console>:7: error: type mismatch;
 found   : (String) => Unit
 required: (Any) => ?
Run Code Online (Sandbox Code Playgroud)

我的双重问题是: …

scala

4
推荐指数
2
解决办法
428
查看次数

Scala for-comprehension返回有序地图

如何使用for-comprehension返回可以分配给有序Map的内容?这是我所拥有的代码的简化:

class Bar
class Foo(val name: String, val bar: Bar)
val myList: java.util.List[Foo] = ...
val result: ListMap[String, Bar] =
    for {
        foo <- myList
    } yield (foo.name, foo.bar)
Run Code Online (Sandbox Code Playgroud)

我需要确保我的结果是一个有序的Map,顺序是从for-comprehension返回的元组.

有了上述,我得到错误:

error: type mismatch;
found   : scala.collection.mutable.Buffer[(String,Bar)]
required: scala.collection.immutable.ListMap[String,Bar]
foo <- myList
Run Code Online (Sandbox Code Playgroud)

这编译:

class Bar
class Foo(val name: String, val bar: Bar)
val myList: java.util.List[Foo] = ...
val result: Predef.Map[String, Bar] =
    {
        for {
            foo <- myList
        } yield (foo.name, foo.bar)
    } toMap
Run Code Online (Sandbox Code Playgroud)

但后来我假设地图不会被排序,我需要一个明确的toMap调用.

我怎样才能做到这一点?

scala scala-2.8 scala-collections

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

将任何JavaScript值转换为字符串的最短方法是什么?

我有一个功能,说:

setValue: function(myValue) {
  ...
}
Run Code Online (Sandbox Code Playgroud)

调用者可以传递字符串,数字,布尔值或对象.我需要确保在行下面传递的值是一个字符串.这样做最安全的方法是什么?我意识到有很多方法可以将某些类型(例如Date)转换为字符串,但我只是在寻找合理的开箱即用的东西.

我可以写一系列类型的陈述:

if (typeof myValue == "boolean") {}
else if () {}
...
Run Code Online (Sandbox Code Playgroud)

但这可能容易出错,因为类型可能会被遗漏.

Firefox似乎支持编写如下内容:

var foo = 10; foo.toString()
Run Code Online (Sandbox Code Playgroud)

但这适用于所有网络浏览器吗?我需要支持IE 6及更高版本.

简而言之,在覆盖每一种类型时进行转换的最短方法是什么?

-Erik

javascript

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