2017-02-11 4 views
0

У меня есть код ниже, который должен взять список строк и вернуть их в меню опций. Тем не менее, я получил ошибку в #> после автозаполнения в фрагменте, в котором говорится: «Не удалось найти неявное значение для параметра computer: net.liftweb.util.CanBind [scala.xml.NodeSeq с Int => scala.xml.NodeSeq ] "scala вернуть список строк в html

// The html code 
<select id="autoComplete" class="marketplace.pharmacy.list"> 
    <option id="drug">Drug Name</option> 
</select> 

// The snippet 
def getAutoComplete(str: String): CssSel = "#autoComplete" #> { 
    getRxAutoComplete(str) match { 
    case list => "select" #> list.map { drug => 
     drug #> ("option *" #> drug) 
    } 
    case List() => NodeSeq.Empty 
    } 
} 


// The code to return the results (simplified) 
def getRxAutoComplete(str: String): List[String] = { 
    val list = List("Amoxicillin", "Amoximoxi", "Amoxia") 
    list 
} 

ответ

0

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

1

Проблема в том, что вы возвращаете два разных типа в свой оператор соответствия. Первая возвращает CssSel, а во втором вы возвращаете NodeSeq

Вы можете это исправить, либо изменения:

case List() => "*" #> NodeSeq.Empty 

или использовать метод ClearNodes найденный в net.liftweb.util:

case List() => ClearNodes 
+0

спасибо , Я попытался использовать NodeSeq.Empty для одной из записей. Затем компилятор жалуется, что одна из записей - это NodeSeq, а NodeSeq.Empty - Int. –

+0

Извините, я обновил ответ, внимательно посмотрев его. – jcern