为了学习,我开发了一个Scala和JSF应用程序。在这个应用程序中,在JSF中呈现之前,我必须将所有Scala集合对象转换为Java cllectios。有没有什么简单的方法可以通过ScalaElResolver这样的东西来实现,如果有,任何人都有ScalaElResolver的示例代码。提前谢谢菲利普
嗨,我刚刚在github上打开了一个scalaelresolver项目,https://github.com/werpu/scalaelresolver解析程序除了解析scala属性外,还进行集合转换。其中包括一个例子。
此代码基于Werner Punz的ScalaElResolver。我已经把它精简了,所以它只处理从ScalaIterable
到java的转换。lang.Iterable
:
class SimpleScalaElResolver extends ELResolver {
override def getValue(elContext: ELContext, base: AnyRef,
prop: AnyRef): AnyRef = {
println(s"SimpleElResolver: getValue: Entering: $base.$prop")
if (base == null) {
null
} else {
val method = base.getClass.getDeclaredMethod(prop.toString)
if (method != null) {
val res = method.invoke(base)
if (res.isInstanceOf[Iterable[_]]) {
val iter = res.asInstanceOf[Iterable[_]]
println("getValue: Wrapping as Java iterable")
elContext.setPropertyResolved(true)
JavaConversions.asJavaIterable(iter)
} else {
null
}
} else {
null
}
}
}
使用sbt
及其web插件(在引擎盖下使用jetty
),即使所有其他方法“尚未实现”,也足以让它运行,如:
override def getCommonPropertyType(elContext: ELContext, o: AnyRef): Class[_] = {
???
}
在我的例子中,没有调用其他方法。
我只在. jspx
中测试过它;据我所知,这也应该适用于JSF
。
例如:如果你有一个类
class Model(val list: List[Int])
在你的控制器里
val model = new Model(List(1))
httpRequest.setAttribute("model", model)
可以在EL中访问实例
<ul>
<c:forEach var="i" items="${ model.list }">
<li>
<c:out value="${ i }"/>
</li>
</c:forEach>
</ul>
因此,EL中的属性名称与模型类中的val
的名称完全匹配。否则,您会得到一个java.lang.NoSuchMETHOExc0019。
Scala提供了一套很好的集合实现,提供了一些集合类型的抽象。 Scala 集合分为可变的和不可变的集合。 可变集合可以在适当的地方被更新或扩展。这意味着你可以修改,添加,移除一个集合的元素。 而不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变。 接下来我们将为大家介绍几种常用集合类型的应用:
Scala 集合 Scala Set(集合)是没有重复的对象集合,所有的元素都是唯一的。 Scala 集合分为可变的和不可变的集合。 默认情况下,Scala 使用的是不可变集合,如果你想使用可变集合,需要引用 scala.collection.mutable.Set 包。 默认引用 scala.collection.immutable.Set,不可变集合实例如下: val set = Set(1
Scala提供了一套很好的集合实现,提供了一些集合类型的抽象。 Scala 集合分为可变的和不可变的集合。 可变集合可以在适当的地方被更新或扩展。这意味着你可以修改,添加,移除一个集合的元素。 而不可变集合类,相比之下,永远不会改变。不过,你仍然可以模拟添加,移除或更新操作。但是这些操作将在每一种情况下都返回一个新的集合,同时使原来的集合不发生改变。 接下来我们将为大家介绍几种常用集合类型的应用:
尽管我的最大可用堆大小似乎大于我认为我需要的粗略内存量,但我还是尝试通过来增加堆大小([4])。虽然这解决了我的问题,但最好知道是否有更好的方法来创建这种随机数据,从而避免我不得不增加JVM可用的内存?因此,我有以下三个问题,如果有人能回答,我将不胜感激: > 在Scala中,尤其是在Scala shell中,垃圾回收何时发生?在上面的命令中,有什么可以收集,那么为什么要调用GC(对不起,第二部分
问题内容: Environment : Tomcat 8 Spring Boot 1.5 JSF 2.2 Apache MyFaces Spring MVC Code : 我正在Servlet 3.0环境中集成Spring Boot和JSF 2.2。 配置类: JSFConfig.java - Config for JSF. Spring Boot Main Class : Managed Bea
环境: JSF 2.2 Apache MyFaces Spring MVC 配置类: jsfconfig.java-Config for JSF。 Spring Boot主类: 托管Bean: java-用于JSF的托管Bean Facelets: 1)当我在。2)使用用户输入的值设置。3)但为空。4)这是否意味着Spring和JSF没有集成?我还注册了 我还尝试从userbean.java中删除