фрагмент кода: префикс не привязан к пространству имен

StackOverflow https://stackoverflow.com/questions/1019599

  •  06-07-2019
  •  | 
  •  

Вопрос

Я только начинаю с lift и 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>
-----------------------------^
Это было полезно?

Решение

Возможно, лифт не понимает, как обработать возвращаемое значение. Попробуйте принудительно выполнить неявное преобразование в NodeSeq, указав его как returntype.

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

Другие советы

Я только что нашел другую причину этой ошибки - неразрешенный тег.

У меня был этот 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 и получил тот же префикс не связан с ошибкой пространства имен . Изменение одного утверждения на:

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

Да, это была моя собственная глупая ошибка, но, документировав здесь проблему, я надеюсь, я спасу кого-то еще от этой проблемы и не знаю почему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top