我刚从电梯和scala开始,并且有一个我不理解的问题。
我有下面的index.html
<html>
<head><title>title</title></head>
<body>
<table>
<lift:Members.list>
<tr>
<td><m:nick/></td>
</tr>
</lift:Members.list>
</table>
</body>
</html>
以下代码段:
class Members {
def list(xhtml: NodeSeq) =
Member.findAll.flatMap(member => bind("m",xhtml
,"nick" -> member.nickName
))
}
由于某种原因我得到以下错误。香港专业教育学院尝试了很多东西,但不能让它工作。怎么了?
XML Parsing Error: prefix not bound to a namespace
Location: http://localhost:8080/hazardlift-1.0-SNAPSHOT/
Line Number 8, Column 25:<td><m:nick></m:nick></td>
-----------------------------^
答案 0 :(得分:4)
也许电梯无法获得如何处理您的返回值。尝试通过将其指定为returntype来强制隐式转换为NodeSeq。
....
def list(xhtml: NodeSeq) : NodeSeq =
....
答案 1 :(得分:0)
我刚发现了这个错误的另一个原因 - 一个未解析的标签。
我有这个HTML:
<div >
<h3>Request Information</h3>
<lift:DetailedRequestData.renderContent>
<f:rowTag></f:rowTag>
</lift:DetailedRequestData.renderContent>
</div>
我是为renderContent
写的:
def renderContent(ns: NodeSeq): NodeSeq = {
val key = beginTrans(DisplayData.logger)
var result = ns
try {
var requestID = DisplayData.getParameter("request")
bind("f", ns, "rowTag" -> <p>Request ID: {requestID}</p>)
}
catch {
case t: Throwable => DisplayData.logger.error("[DetailedRequestData$.renderContent] ", t)
}
endTrans(DisplayData.logger, key)
result
}
由于我没有将bind
的结果分配给result
,因此我返回了未经修改的NodeSeq
并得到了相同的prefix not bound to a namespace
错误。将一个语句更改为:
result = bind("f", ns, "rowTag" -> <p>Request ID: {requestID}</p>)
是的,这是我自己的愚蠢错误,但是通过记录这里的问题,希望我能避免其他人遇到同样的问题而不知道原因。