Как создать фрагмент в Lift — Scala

#scala #lift

#scala #поднимите

Вопрос:

Что мне нужно сделать, это поместить один тег на HTML-страницу:

 <lift:surround with="default" at="content"> 

<span class="lift:WorkingStatus.print"></span> 

</lift:surround> 
  

и иметь класс snippet в соответствующем snippet.* package:

 class WorkingStatus {

  def print():String={return "<table></table>";}

  def speak = <span>Hello World</span>

  def render = "* *" #> "Hello there in span"
} 
  

функция сгенерирует некоторую html-таблицу в виде строки, которая будет отображаться в html, как в def print() .

Итак, это что-то довольно тривиальное, я никак не могу приступить к работе. Мне нужен класс Scala, который можно было бы включать везде, где это необходимо, в html-страницы, например, — допустим — с помощью <jsp:include> , и этот класс должен иметь возможность подключаться к внешнему веб-сервису, получать список некоторых данных и генерировать html, который затем будет вставлен в нужные места… достаточно сложно? 🙂

Комментарии:

1. Итак, подождите, вы хотите сказать, что приведенный выше код у вас вообще не работает? Каким должен быть print()? Функция рендеринга — это то, что помещает содержимое в интервал, и это не относится к speak или к print. Очень неясно, о чем вы спрашиваете.

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

Ответ №1:

У вас неправильная подпись для метода print. Методы фрагментов — NodeSeq => NodeSeq. Итак, более подробный вариант
def print(xhtml:NodeSeq):NodeSeq={return <table></table>;} или вы можете использовать

 def print = "*" #> <table></table>
  

если вам понадобится какое-то преобразование или просто:

 def print = <table></table>
  

Комментарии:

1. Мне нужно выполнить некоторую логику внутри print —> вызвать внешнюю веб-службу, сгенерировать html в каком-нибудь, скажем , «цикле for» или что-то в этом роде, а затем вернуть сгенерированный html. Я также пришел к выводу, что мне нужен этот класс NodeSeq, но этот класс не может быть удален (невозможно создать новый NodeSeq). Я также не очень понимаю, что такое print = «* *» #> — что означают эти две звезды?

2. на этой странице объясняется преобразование css