我正在进行某种测验,并有一个问题和答案列表,通过控制器传输到我的视图类。人们可以在页面上提问和回答问题,然后我的系统会“收集”这些问题,以便从中进行测验。
如果您是第一个启动该计划/测验的人,则问题列表为空。因此,我想检查带有if / else子句的空测验,if-case似乎工作正常,但是else-case抛出IndexOutOfBoundsException
,我不明白为什么。我认为当问题列表为空时不会使用else-part,因此不应该抛出异常。应该....
查看课程
@(questionList: List[Question], answerList: List[Answer], answerRadioForm: Form[Answer])
@if(questionList.length == 0){
No questions yet!
}
else {
<!-- As only the highest ranked question gets put into the List, there is only one entry on first place -->
<b>@questionList.get(0).questionText</b>
@for(question <- questionList) {
@question.questionText - @question.ownerID <br>
}
}
错误:
[IndexOutOfBoundsException: Index: 0, Size: 0]
49 <b>"""),_display_(/*27.8*/questionList/*27.20*/.get(0).questionText),format.raw/*27.40*/("""</b>
那么,我在这里错过了什么?
答案 0 :(得分:5)
我找到了一个解决方案,尽管回答你自己的问题是不好的做法,我已经搜索了几个小时,也许我的回答可以帮助其他人:
if / else。
之间不能有返回/换行符不是否有效:
@if(questionList.length == 0){
No questions yet!
}
else { ...
<强>使用:强>
@if(questionList.length == 0){
No questions yet!
} else {
编辑:由于@if(questionList.length > 0){
也可以正常工作,可以防止意外插入换行符,并且更容易阅读和理解,我将使用此代替其他内容。
答案 1 :(得分:0)
首先,您的代码是否已编译,因为List上没有get
方法。您可以改为使用list.headOption
。
好吧,我可以使用questionList(0)
另一种解决方案。
@questionList.headOption.map(q => <b>{q.text}</b>).getOrElse("No questions yet!")
@for(question <- questionList) {
@question.text - @question.ownerId <br>
}