ascenseur snippet: préfixe non lié à un espace de noms
Question
Je commence juste avec lift et scala et j'ai un problème que je ne comprends pas vraiment.
j'ai l'index suivant.html
<html>
<head><title>title</title></head>
<body>
<table>
<lift:Members.list>
<tr>
<td><m:nick/></td>
</tr>
</lift:Members.list>
</table>
</body>
</html>
Et l'extrait suivant:
class Members {
def list(xhtml: NodeSeq) =
Member.findAll.flatMap(member => bind("m",xhtml
,"nick" -> member.nickName
))
}
pour une raison quelconque, j'obtiens l'erreur suivante. J'ai essayé beaucoup de choses mais je ne peux pas le faire fonctionner. qu'est-ce qui ne va pas?
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>
-----------------------------^
La solution
Peut-être que lift ne comprend pas comment gérer votre valeur de retour. Essayez de forcer une conversion implicite vers NodeSeq en le spécifiant comme type de retour.
....
def list(xhtml: NodeSeq) : NodeSeq =
....
Autres conseils
Je viens de trouver une autre cause à cette erreur: une balise non résolue.
J'ai eu ce code HTML:
<div >
<h3>Request Information</h3>
<lift:DetailedRequestData.renderContent>
<f:rowTag></f:rowTag>
</lift:DetailedRequestData.renderContent>
</div>
Je l'avais écrit pour 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
}
Comme je n'avais pas affecté le résultat de bind
à résultat
, je renvoyais le NodeSeq non modifié
et le même le préfixe n'est pas lié à une erreur d'espace de noms
. Changer la déclaration en:
result = bind("f", ns, "rowTag" -> <p>Request ID: {requestID}</p>)
Oui, c'était ma faute stupide, mais en documentant le problème ici, j'espère que je sauverai quelqu'un d'autre d'avoir le même problème et de ne pas savoir pourquoi.