Frage

im gerade erst mit Lift und scala und haben ein Problem, das ich nicht verstehe wirklich.

Ich habe das Folowing 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>

Und das folgende Snippet:

class Members {
  def list(xhtml: NodeSeq) =
  Member.findAll.flatMap(member => bind("m",xhtml
                                       ,"nick" -> member.nickName
    ))
}  

aus irgendeinem Grund bekomme ich die folgende Fehlermeldung. ive versucht, Dinge viel aber kann es nicht zu arbeiten. was ist falsch?

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>
-----------------------------^
War es hilfreich?

Lösung

Vielleicht Lift nicht bekommen, wie Sie Ihren Rückgabewert zu behandeln. Versuchen Sie zwingt eine implizite Konvertierung zu NodeSeq indem er sie als Rückgabetyp specifing.

....
def list(xhtml: NodeSeq) : NodeSeq = 
....

Andere Tipps

Ich habe gerade eine andere Ursache für diesen Fehler - einen ungelösten Tag

.

Ich hatte diese HTML:

<div >
    <h3>Request Information</h3>

    <lift:DetailedRequestData.renderContent>
        <f:rowTag></f:rowTag>
    </lift:DetailedRequestData.renderContent>
</div>

hatte ich geschrieben dies für 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
}

Da ich das Ergebnis der bind nicht zugewiesen hatte result, ich war die unmodifizierte NodeSeq Rückkehr und bekam die gleichen prefix not bound to a namespace Fehler. Ändern der eine Aussage zu:

    result = bind("f", ns, "rowTag" -> <p>Request ID: {requestID}</p>)

Ja, das waren meine eigenen dummen Fehler, aber das Problem hier zu dokumentieren, hoffentlich werde ich jemanden anderes aus, die das gleiche Problem sparen und nicht zu wissen, warum.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top