Я делаю небольшую систему управления выпуском в Лифте, чтобы узнать как Scala, так и Lift.Метод Зависимости и обработка ошибок
У меня есть представление, которое отображает одну проблему, относящуюся к проекту. Перед тем, как связать данные в шаблон представления, я хочу, чтобы проверить, что я все требуемые данные, поэтому я хочу специально проверить, что:
- Проекта ID пары были поставлены
- имеются проект с помощью прилагаемого проект ID
- вопрос ID пары были поставлен
- существует проблема с прилагаемым выпуском ID
И они должны быть оценены в порядке, так что, если я должен был писать теперь с моим пониманиемиз Scala, я бы сделал следующее:
class Project {
def findByID(xhtml:NodeSeq): NodeSeq =
param("projectID") match {
case Full(projectID) =>
Project.findByID(projectID) match {
case Full(projectID) =>
param("issueID") match {
....
}
case _ => Text("Project does not exist")
}
case _ => Text("projectIDNotSupplied")
}
}
Так что мне интересно, есть ли более простой способ выполнить это? Я думаю, что выражение для выражения может выполнить нечто подобное. Имейте в виду, что Project.findByID возвращает Box [Project].
Hey Jorge выглядит так, как будто это будет работать, только это фрагмент, так как я знаю, что тип возвращаемого значения должен быть: NodeSeq. Если нет, я получаю сообщение об ошибке, когда метод не найден. Чтобы обойти это, я могу обернуть целое for() в блоке и вызвать openOr (текст («fail»)) на нем Но теперь, когда одна из зависимостей завершилась неудачно, я получаю сообщение «fail». Я пытался использовать метод run(), но я не совсем понял. есть идеи? –
Я отредактировал фрагмент кода выше, чтобы вернуть NodeSeq. –
Отлично, спасибо Хорхе. Это был один из тех, «почему я не подумал об этих случаях». еще раз спасибо –