2009-06-19 5 views
3

메뚜기가 리프트와 스칼라로 시작하여 실제로 이해가되지 않는 문제가 있습니다. 나는 다음과 같은 오류가 어떤 이유로리프트 스 니펫 : 접두사가 네임 스페이스에 바인딩되지 않았습니다.

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

:

내가는 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> 

그리고 다음 코드를 가지고있다. 필자는 여러 가지 일을 시도했지만 작동하지 않습니다. 뭐가 문제 야?

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> 
-----------------------------^ 

답변

4

아마 당신의 반환 값을 처리하는 방법을하지 않습니다 올립니다. returntype으로 지정하여 NodeSeq에 암시 적으로 변환하도록하십시오.

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

감사합니다. 어떻게 그걸 좋은 방법으로 발견 할 수 있습니까? 오류는 실제로 도움이되지 않았습니다 ... –

+0

예외는 당신을 로그로 안내합니다. 로그에서 스 니펫과 일치하는 데 실패했음을 알 수 있습니다. 스 니펫에는 반환 형식이 필요하다는 것이 표준이므로 스 니펫 delcaration에서 형식 서명을 확인하라는 메시지가 표시됩니다. – Joe

0

나는이 오류의 또 다른 원인 인 해결되지 않은 태그를 발견했습니다. 내가 renderContent이를 작성했다

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

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

:

내가이 HTML했다

내가 resultbind의 결과를 할당하지 않았다 때문에
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 
} 

, 내가 돌아되었다 수정되지 않은 NodeSeqprefix not bound to a namespace 오류가 발생했습니다. 에 하나 개의 문장을 변경 :

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

예,이이었다 내 자신의 바보 같은 잘못이 있지만, 여기에 문제를 문서화하여, 희망 나는이 같은 문제가 왜 모르는 다른 사람이 저장됩니다.