假设我有以下html:
<html>
<head>
</head>
<body>
<div id="wrapper" >
<div class="s2">I am going <a title="some title" href="">by flying</a>
<p>mr tt</p>
</div>
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
文本节点中任何等于或大于4个字符的单词,例如单词"going"将替换<span>going<span>为原始html中的html内容(不是文本)而不更改任何其他内容.
如果我尝试做像element.html(替换)这样的事情,问题是如果让当前元素<div class="s2">也将擦除<a title="some title"
我有scala类,如:
@Entity("users")
class User(@Required val cid: String, val isAdmin: Boolean = false, @Required val dateJoined: Date = new Date() ) {
@Id var id: ObjectId = _
@Reference
val foos = new ArrayList[Foo]
}
Run Code Online (Sandbox Code Playgroud)
如果它是一个Java类,我只需要实现java.io.Serializable,但这在scala中不起作用.上面宣布的foos也是私人还是公共?
我有一种情况,我发送jquery ajax post请求,但在我的Web应用程序中,此特定ajax请求的处理程序(处理post参数后)将调用另一个控制器中的操作(不确定这是否称为重定向),这基本上呈现整个网站页面(如页面刷新).但我注意到浏览器会显示相同的页面,而不是刷新新页面的内容.
有什么不对?我该如何处理这种情况?
我不得不编辑我的问题因为我改变了我的ajax调用.
这就是代码的样子:
function chkSubmit(event, actionType) {
var msgid = showlst('Please wait ...');
var data = ''
if (actionType == 'IAmDone') {
var letters = 'e,b,c'
data = 'actionType=' + actionType + '&letters=' + letters;
} else data = 'actionType=' + actionType;
$j.ajax({
type: 'POST',
url: context + '/app/handleChk',
data: data
});
return false;
}
Run Code Online (Sandbox Code Playgroud)
单击页面上的按钮时,将运行上述功能.但同样的页面继续显示.浏览器调试器显示它确实从它应该刷新页面的新操作接收到200 OK响应.我使用的是Chrome浏览器和jquery 1.6.1
对不起我的代码示例中的拼写错误.我纠正了.
我有一个返回的函数(groovy代码)
[words: "one two", row: 23, col: 45]
Run Code Online (Sandbox Code Playgroud)
在scala中,我将上面更改为scala Map,但后来我被迫将其声明为
Map[String, Any]
Run Code Online (Sandbox Code Playgroud)
但是这样做的缺点是,如果我访问一个键,例如map("words"),我必须添加样板
map2("words").asInstanceOf[String]
Run Code Online (Sandbox Code Playgroud)
在scala中是否有更好的方法不需要我添加asInstanceOf?
从Java API我得到
java.util.LinkedHashMap[String,java.util.ArrayList[String]]
Run Code Online (Sandbox Code Playgroud)
然后我需要将其作为参数传递给scala程序
val rmap = Foo.baz(parameter)
Run Code Online (Sandbox Code Playgroud)
此参数是scala类型:
Map[String,List[String]]
Run Code Online (Sandbox Code Playgroud)
那我怎么能轻易转换
java.util.LinkedHashMap[String,java.util.ArrayList[String]]
Run Code Online (Sandbox Code Playgroud)
至
Map[String,List[String]]
Run Code Online (Sandbox Code Playgroud)
我尝试使用import scala.collection.JavaConversions._,但在我的情况下,这不起作用(或者至少这是我猜的)因为scala代码在模板函数中,我只能放入导入scala.collection.JavaConversions._ inside功能.模板功能如下:
def someFunc(param: java.util.LinkedHashMap[String,java.util.ArrayList[String]]) = {
import scala.collection.JavaConversions._
val rmap = Foo.baz(param) // param is of scala type Map[String,List[String]]
.......
Run Code Online (Sandbox Code Playgroud)
现在scala不会自动将java类型转换为scala类型.
这是我得到的编译器错误:引发的错误是:类型不匹配; found:java.util.LinkedHashMap [String,java.util.ArrayList [String]] required:Map [String,List [String]]
我需要能够声明变量,稍后我需要引用它们.为了实现这一点,这是我的scala模板的简化版本:
@(map1:
java.util.LinkedHashMap[String,java.util.LinkedHashMap[String,Object]])
@import scala.collection.JavaConversions._
@import play.Logger
@for( (key,value) <- map1) {
<div>
@{
val rmap = Foo.someMethod(value)
val baz = rmap.getOrElse("baz", null)
<table border="0" cellpadding="0" cellspacing="0" >
<tbody>
<tr>
<td rowspan="3">
<div class="bar">
@baz
</div>
</td>
</tr>
</tbody>
</table>
}
</div>
}
Run Code Online (Sandbox Code Playgroud)
是否高于有效的scala模板,如果不是,我如何声明baz并在标记中稍后引用它?我使用的是1.2.2RC2和scala 0.9.1
我有一个Scala域类(用于持久化到数据库),如:
class Foo() {
var bar: Long = _ // or None or null ???
var jaz: String = _ // or None or null or empty string "" ???
}
Run Code Online (Sandbox Code Playgroud)
如果字段bar和jaz是必填字段而不是可选字段,如何影响答案?
我有一个我要声明的变量:
val foo : Baz
for (s <- barList) {
if s.tag == "java"
foo = s
}
Run Code Online (Sandbox Code Playgroud)
一旦foo分配了一个值,foo就无法重新分配.从这个角度来看foo是val类型而不是var.但上面不是有效的scala代码,因为scala强制在声明时分配值.即使我使用var,scala也会强制我分配一个值.有更好的解决方案吗?我想要val的原因是因为它导致更好的性能和val语义适合上述场景.
假设我有来自查询字符串请求参数的String参数.如您所知,参数可能丢失或可能存在,但值为空字符串.在groovy语言中,我可以简单地做一些事情
List lst = words?.split(',')
Run Code Online (Sandbox Code Playgroud)
如果单词为null,则lst将为null而不是抛出NPE
scala中的类似快捷方式是什么?
Option [String]在这里不是一个选项,因为它是来自查询字符串的单词是String类型.
我有返回此类型的java API:
ArrayList[ArrayList[String]] = Foo.someJavaMethod()
Run Code Online (Sandbox Code Playgroud)
在scala程序中,我需要将上面的类型作为参数发送到类型为的scala函数"bar"
def bar(param: List[List[String]]) : List[String] = {
}
Run Code Online (Sandbox Code Playgroud)
所以我称之为:
val list = bar(Foo.someJavaMethod())
Run Code Online (Sandbox Code Playgroud)
但这不起作用,因为我得到编译错误.
我以为有这个导入
import scala.collection.JavaConversions._
Run Code Online (Sandbox Code Playgroud)
将在Java和Scala集合之间进行隐式自动转换.
我也试过用过:
Foo.someJavaMethod().toList
Run Code Online (Sandbox Code Playgroud)
但这也不起作用.
这个问题的解决方案是什么?