Для любого метода процесса, подобного этому, который будет вызываться ajax, код Scala в методе можно разделить на две части:
- Код, который будет выполняться на сервере как обычно.
- Код, который будет преобразован в javascript и отправлен обратно в браузер.
Единственный код, который будет преобразован в javascript, - это код, возвращаемый методом, который, какКак видно из сигнатуры метода, это объект Lift JsCmd.В этом конкретном примере возвращаемые значения из метода процесса являются возвращаемыми значениями из различных операторов case.Первый оператор case вызывает S.error, второй - S.notice, а третий - S.error.Именно они будут преобразованы в javascript для отправки обратно в браузер.Если вы хотите увидеть настоящий javascript, он будет зарегистрирован в Lift.например, если у меня есть форма с атрибутом «title», и я сообщаю об ошибке, вызывая S.error («title», «неправильный заголовок»), то мой журнал показывает:
13:32:32.841 [291876857@qtp-349619216-4] DEBUG comet_trace - AJAX Response:
8b5ruvtezi521nbful5n7s3cp
InMemoryResponse(try{jQuery("#lift__noticesContainer__").each(function(i)
{this.innerHTML = "<div id=\"lift__noticesContainer___error\"><ul>
<li>wrong title</li>
</ul></div>";});} catch (e) {}
try{jQuery("#title").each(function(i) {
this.innerHTML = "<span id=\"title\">wrong title</span>";});}
catch (e) {},
List((Content-Length,295), (Content-Type,text/javascript; charset=utf-8)),
List(), 200)
Если вы хотитечтобы посмотреть еще несколько примеров использования JsCmd, я бы порекомендовал "Exploring Lift":
http://exploring.liftweb.net/master/index-11.html
Кстати, для вопросов Lift я бы порекомендовал задавать вопросы в группе Google Liftа не переполнение стека.Это официальный канал поддержки, и сообщество очень отзывчиво.