#ajax #scala #lift
#ajax #scala #лифт
Вопрос:
У меня есть следующая форма:
<form class="lift:form.ajax">
<div class="lift:StreamInput">
<input type="hidden" name="user" value="USER" />
<input type="hidden" name="room" value="ROOM" />
<input type="hidden" name="path" value="PATH" />
<input type="hidden" name="level" value="LEVEL" />
</div>
<input type="submit" value="" />
</form>
Который переходит в:
object StreamInput {
case class StreamItem(
user: String,
path: String,
level: String,
room: String
)
def render = {
var user = ""
var path = ""
var level = ""
var room = ""
def process(): JsCmd = {
var message = StreamItem(user, path, level, room)
StreamServer ! message
}
"name=user" #> SHtml.onSubmit(user => user = _)
"name=path" #> SHtml.onSubmit(path => path = _)
"name=level" #> SHtml.onSubmit(level => level = _)
"name=room" #> (SHtml.onSubmit(room => room = _) SHtml.hidden(process))
}
}
При компиляции я получаю следующие ошибки:
"Missing parameter type for expanded function ((x$1) => user = x$1)"
"name=user" #> SHtml.onSubmit(user => user = _)
^
"Missing parameter type for expanded function ((x$2) => user = x$2)"
"name=path" #> SHtml.onSubmit(path => path = _)
^
"Missing parameter type for expanded function ((x$3) => user = x$3)"
"name=level" #> SHtml.onSubmit(level => level = _)
^
"Missing parameter type for expanded function ((x$4) => user = x$4)"
"name=room" #> SHtml.onSubmit(room => room = _)
^
Я уже некоторое время гуглю и, похоже, не могу найти объяснения, которое соответствовало бы моему конкретному сценарию.
Не уверен, чего мне не хватает, любая помощь очень ценится, заранее спасибо 🙂
Ответ №1:
SHtml.onSubmit
выполняется обратный (String) ⇒ Any
вызов . Это String
вновь отправленное значение поля. В вашем случае вы хотите предоставить метод установки, который изменит ваш var
s на это новое значение. Измените аргумент на
SHtml.onSubmit(user = _)
или расширенный
SHtml.onSubmit(text => user = text)
Комментарии:
1. Спасибо за помощь, ошибки теперь исчезли, но я получаю последнюю ошибку, связанную с этим битом: » SHtml.hidden(process))», » не является членом (scala.xml.NodeSeq) => scala.xml.NodeSeq»
2. Не уверен, что вам следует использовать
onSubmit
then. Взгляните на simply.liftweb.net/index-4.8.html#toc-Section-4.8 гдеSHtml.text
используется. Также не забудьте объединить преобразования CSS сamp;
.